forked from Mirrorlandia_minetest/minetest
Simplify regex used in check_modname_prefix and other improvements.
Simplified the regex used, added comments and changed the error message to contain the correct mod name.
This commit is contained in:
parent
c24f3b0a65
commit
0cf15470fc
@ -51,20 +51,24 @@ local forbidden_item_names = {
|
|||||||
|
|
||||||
local function check_modname_prefix(name)
|
local function check_modname_prefix(name)
|
||||||
if name:sub(1,1) == ":" then
|
if name:sub(1,1) == ":" then
|
||||||
-- Escape the modname prefix enforcement mechanism
|
-- If the name starts with a colon, we can skip the modname prefix
|
||||||
|
-- mechanism.
|
||||||
return name:sub(2)
|
return name:sub(2)
|
||||||
else
|
else
|
||||||
-- Modname prefix enforcement
|
-- Enforce that the name starts with the correct mod name.
|
||||||
local expected_prefix = core.get_current_modname() .. ":"
|
local expected_prefix = core.get_current_modname() .. ":"
|
||||||
if name:sub(1, #expected_prefix) ~= expected_prefix then
|
if name:sub(1, #expected_prefix) ~= expected_prefix then
|
||||||
error("Name " .. name .. " does not follow naming conventions: " ..
|
error("Name " .. name .. " does not follow naming conventions: " ..
|
||||||
"\"modname:\" or \":\" prefix required")
|
"\"" .. expected_prefix .. "\" or \":\" prefix required")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- Enforce that the name only contains letters, numbers and underscores.
|
||||||
local subname = name:sub(#expected_prefix+1)
|
local subname = name:sub(#expected_prefix+1)
|
||||||
if subname:find("[^abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_]") then
|
if subname:find("[^%w_]") then
|
||||||
error("Name " .. name .. " does not follow naming conventions: " ..
|
error("Name " .. name .. " does not follow naming conventions: " ..
|
||||||
"contains unallowed characters")
|
"contains unallowed characters")
|
||||||
end
|
end
|
||||||
|
|
||||||
return name
|
return name
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
Loading…
Reference in New Issue
Block a user