Module:Races
Jump to navigation
Jump to search
Module documentation
This documentation is transcluded from Module:Races/doc. [edit] [history] [purge]
Module:Races's function main is invoked by Template:Race.
Module:Races requires Module:Mainonly.
Module:Races loads data from Module:NPC races.
| Function list |
|---|
| L 6 — p.main L 26 — p._main |
Parses race arguments to link to correct pages, and adds appropriate categories.
local p = {}
local onmain = require('Module:Mainonly').on_main
local racemap = mw.loadData('Module:NPC races')
function p.main(frame)
local args = frame:getParent().args
if args[1] and args[1] ~= '' then
local r = p._main(args[1])
if r ~= '' then
return r
else
return args[1]
end
end
local page_title = mw.title.getCurrentTitle().fullText
local ret = 'Unknown ['.. tostring(mw.uri.fullUrl(page_title,'action=edit')) ..' edit]'
if onmain() then
ret = ret .. '[[Category:Needs race]]'
end
return ret
end
function p._main(race)
local values = racemap[string.lower(race)]
local r = {}
local disp = {}
local cats = {}
if values then
table.insert(r, values.racelink)
table.insert(disp, values.racedisp or '')
table.insert(cats, values.racecat)
if values.addcat then
for _, cat in ipairs(values.addcat) do
table.insert(cats, cat)
end
end
end
for i, v in ipairs(r) do
if (v ~= '' and disp[i] ~= '') then
r[i] = string.format('[[%s|%s]]', v, disp[i])
elseif (v ~= '') then
r[i] = string.format('[[%s]]', v)
elseif (disp[i] ~= '') then
r[i] = string.format('%s', disp[i])
end
end
if onmain() then
for i, v in ipairs(cats) do
if (v ~= '') then
cats[i] = string.format('[[Category:%s]]', v)
end
end
return table.concat(r, ', ')..table.concat(cats, '')
end
return table.concat(r, ', ')
end
return p