Documentation for this module may be created at Module:Test/doc
require('strict') local getArgs = require('Module:Arguments').getArgs local list = require('Module:List') local p = {} local knownargs = { ['format'] = true, ['class'] = true, ['style'] = true, ['list_style'] = true, ['item_style'] = true, ['item1_style'] = true, ['indent'] = true } local labels = { ['NA'] = "[[:Category:North America (Release region)|NA]]", ['EU'] = "[[:Category:Europe (Release region)|EU]]", ['AU'] = "[[:Category:Australia (Release region)|AU]]", ['PAL'] = "[[:Category:Europe (Release region)|PAL]]", ['JP'] = "[[:Category:Japan (Release region)|JP]]", ['WW'] = "<abbr title=\"Worldwide\">WW</abbr>" } local function getLocalLabel(alias) local label = labels[string.upper(alias)] return label end local function splitLabel(s) local islist = true local res = {} for k,v in ipairs(mw.text.split(s or '', '%s*/%s*')) do local v1 = v:match('^%s*([A-Z][A-Z][A-Z]?)%s*$') if v1 then table.insert(res,v1) else local v2 = v:match('^%s*(%[%[[^%[%]|]*|[A-Z][A-Z][A-Z]?%]%])%s*$') if v2 then table.insert(res,v2) else islist = false end end end return islist and res or {s} end function p.main(frame) local args = getArgs(frame) local listformat = args['format'] if (listformat == nil or listformat == "") then listformat = "unbulleted" end local items = {} -- Process the arguments for k, v in pairs(args) do -- Check if the argument is a named parameter local region, label = v:match('^%s*([A-Z][A-Z][A-Z]?)%s*[%|=]%s*(.-)%s*$') if region and label then local localLabel = getLocalLabel(region) if localLabel then label = localLabel .. '|' .. label end table.insert(items, "<span style=\"font-size:97%;\">[[" .. label .. "]]:</span> " .. k) end end -- Add known parameters of Module:List to the table for k, v in pairs(args) do if (knownargs[k] == true) then items[k] = v end end local out = list.makeList(listformat, items) return out end return p