Skip to content
Permalink
Browse files

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.
  • Loading branch information
RobertZenz authored and est31 committed Nov 7, 2015
1 parent c24f3b0 commit 0cf15470fc16e1ebc13a7d8445cfd4278c3caf8b
Showing with 8 additions and 4 deletions.
  1. +8 −4 builtin/game/register.lua
@@ -51,20 +51,24 @@ local forbidden_item_names = {

local function check_modname_prefix(name)
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)
else
-- Modname prefix enforcement
-- Enforce that the name starts with the correct mod name.
local expected_prefix = core.get_current_modname() .. ":"
if name:sub(1, #expected_prefix) ~= expected_prefix then
error("Name " .. name .. " does not follow naming conventions: " ..
"\"modname:\" or \":\" prefix required")
"\"" .. expected_prefix .. "\" or \":\" prefix required")
end

-- Enforce that the name only contains letters, numbers and underscores.
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: " ..
"contains unallowed characters")
end

return name
end
end

0 comments on commit 0cf1547

Please sign in to comment.
You can’t perform that action at this time.