Module:Exedra Skill Scaling
Jump to navigation
Jump to search
See Template:Exedra Skill Scaling.
local getArgs = require('Module:Arguments').getArgs
local p = {}
local function letter2index(letter)
return string.byte(letter) - string.byte('a') + 1
end
local function convertPlaceholder(letter)
if letter:match('[1-9]') then return '%' .. letter .. 's' end
return '%' .. tostring(letter2index(letter)) .. 's'
end
function p.main(...)
local args = getArgs(...)
local frame = select(1, ...)
local template = args.text:gsub([[%%]], '%%%%'):gsub('%[([a-z1-9])%]', convertPlaceholder)
local fmt_args = {}
for letter in ('abcdefghijklmnopqrstuvwxyz'):gmatch('.') do
local min_arg = letter .. '1'
local max_arg = letter .. '10'
local idx = letter2index(letter)
if args[min_arg] and args[max_arg] then
fmt_args[idx] = string.format('%s-%s', args[min_arg], args[max_arg])
elseif args[min_arg] or args[max_arg] then
fmt_args[idx] = args[min_arg] or args[max_arg]
end
if fmt_args[idx] then
fmt_args[idx] = frame:expandTemplate{title=[[Template:Skill Color]], args={idx, fmt_args[idx]}}
end
end
return template:format(unpack(fmt_args))
end
return p