Editing Module:Room features
Jump to navigation
Jump to search
The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.
Latest revision | Your text | ||
Line 3: | Line 3: | ||
function p.main(frame) |
function p.main(frame) |
||
local args = frame:getParent().args |
local args = frame:getParent().args |
||
return p._main(args |
return p._main(args) |
||
end |
end |
||
local infobox_cat_map = { |
local infobox_cat_map = { |
||
[' |
['Monster'] = 'Monsters', |
||
[' |
['NPC'] = 'Non-player characters', |
||
[' |
['Scenery'] = 'Scenery', |
||
[' |
['Skill_node'] = 'Nodes' |
||
['venture'] = 'Ventures', |
|||
['shop'] = 'Shops', |
|||
['variant_category'] = 'Variants', |
|||
} |
} |
||
Line 27: | Line 24: | ||
'?Location object.Image#-=image_sub', |
'?Location object.Image#-=image_sub', |
||
'?Location object.Infobox=infobox_sub', |
'?Location object.Infobox=infobox_sub', |
||
'?Location object.Variant type=vartype_sub', |
|||
'?Location quantity', |
'?Location quantity', |
||
'?#-', |
'?#-', |
||
Line 37: | Line 33: | ||
end |
end |
||
function p._main( |
function p._main(args) |
||
frame = |
local frame = mw.getCurrentFrame() |
||
local ret = mw.html.create() |
local ret = mw.html.create() |
||
local location = args[1] or mw.title.getCurrentTitle().fullText |
|||
local query = mw.smw.ask(base_query(location)) |
local query = mw.smw.ask(base_query(location)) |
||
local empty = true |
|||
if query ~= nil then |
if query ~= nil then |
||
mw.logObject(query) |
|||
local results_by_type = {} |
local results_by_type = {} |
||
for i,v in pairs(infobox_cat_map) do |
for i,v in pairs(infobox_cat_map) do |
||
Line 50: | Line 45: | ||
end |
end |
||
for i,v in ipairs(query) do |
for i,v in ipairs(query) do |
||
local |
local key = infobox_cat_map[v.infobox_sub or v.infobox] |
||
--convert to all lower case with underscores instead of spaces, for best possible matching |
|||
infobox_type = string.lower(infobox_type) |
|||
infobox_type = string.gsub(infobox_type,' ','_') |
|||
local key = infobox_cat_map[infobox_type] |
|||
-- Can be nil - See East Beach for example |
-- Can be nil - See East Beach for example |
||
if key ~= nil then |
if key ~= nil then |
||
Line 62: | Line 53: | ||
for cat,results in pairs(results_by_type) do |
for cat,results in pairs(results_by_type) do |
||
if #results > 0 then |
if #results > 0 then |
||
empty = false |
|||
ret |
ret |
||
:tag('h3'):wikitext(header_text_override[cat] or cat):done() |
:tag('h3'):wikitext(header_text_override[cat] or cat):done() |
||
Line 86: | Line 76: | ||
end |
end |
||
end |
end |
||
else |
|||
end |
|||
if empty then |
|||
ret:tag('dd') |
ret:tag('dd') |
||
:wikitext("''No room features found |
:wikitext("''No room features found''[[Category:Empty room features]] ") |
||
:wikitext(require('Module:Purge')._purge{ anchor = 'roomfeatures_purge', text = '(refresh)' }) |
|||
:done() |
:done() |
||
end |
end |