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:
Robert Zenz 2015-11-07 16:31:32 +01:00 committed by est31
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