Module:ColorSel: Difference between revisions
From Elwiki
(Created page with "-- This is core Color Selector function for `Template:ColorSel`. -- Do not use #invoke to invoke this module directly. local getArgs = require('Module:Arguments').getArgs local data = mw.loadData('Module:ColorSelData') local p = {} local function getRawMap(category) return (data.raw[category] and data.raw) end local function getGroupMap(category) return data.group[category] end local function getMap(category) local match_map -- Try to match raw map...") |
m (fix basic color mapping) |
||
(One intermediate revision by the same user not shown) | |||
Line 3: | Line 3: | ||
local getArgs = require('Module:Arguments').getArgs | local getArgs = require('Module:Arguments').getArgs | ||
local data = mw.loadData('Module: | local data = mw.loadData('Module:ColorSel/data') | ||
local p = {} | local p = {} | ||
Line 49: | Line 49: | ||
if match_map.type == "raw" then | if match_map.type == "raw" then | ||
return ("#" .. (match_map.map[ | return ("#" .. (match_map.map[category] or match_map.map.default)) | ||
elseif match_map.type == "group" then | elseif match_map.type == "group" then | ||
return ("#" .. recursiveFindKey(match_map.map, input)) | return ("#" .. recursiveFindKey(match_map.map, input)) |
Latest revision as of 15:23, 18 March 2024
Documentation for this module may be created at Module:ColorSel/doc
-- This is core Color Selector function for `Template:ColorSel`.
-- Do not use #invoke to invoke this module directly.
local getArgs = require('Module:Arguments').getArgs
local data = mw.loadData('Module:ColorSel/data')
local p = {}
local function getRawMap(category)
return (data.raw[category] and data.raw)
end
local function getGroupMap(category)
return data.group[category]
end
local function getMap(category)
local match_map
-- Try to match raw map
match_map = getRawMap(category)
if match_map then
return { ["type"] = "raw", ["map"] = match_map }
end
-- Try to match grouped map
match_map = getGroupMap(category)
if match_map then
return { ["type"] = "group", ["map"] = match_map }
end
return {}
end
local function recursiveFindKey(map, key)
map = map or {}
key = key or ''
local value = map[key] or ''
if value:sub(1, 1) == '@' then
key = value:sub(2)
value = recursiveFindKey(map, key)
end
return value
end
local function getKey(category, input)
local match_map = getMap(category)
if match_map.type == "raw" then
return ("#" .. (match_map.map[category] or match_map.map.default))
elseif match_map.type == "group" then
return ("#" .. recursiveFindKey(match_map.map, input))
end
end
-- Main process
function p.main(frame)
local args = getArgs(frame)
local category = args[1] or ''
local input = args[2] or ''
return getKey(category, input)
end
return p