Module:Room features: Difference between revisions

Jump to navigation Jump to search
Content added Content deleted
(Add text and category when there are no features)
(Make sure empty text shows for pages with results but where none are shown)
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[1] or mw.title.getCurrentTitle().fullText, frame)
end
end


Line 33: Line 33:
end
end


function p._main(args)
function p._main(location, frame)
local frame = mw.getCurrentFrame()
frame = frame or 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
results_by_type[v] = {}
results_by_type[v] = {}
end
end
-- FIXME: Variant category pages (like [[Sparring Guard]]) do not
-- have an infobox so are not shown
for i,v in ipairs(query) do
for i,v in ipairs(query) do
local key = infobox_cat_map[v.infobox_sub or v.infobox]
local key = infobox_cat_map[v.infobox_sub or v.infobox]
Line 53: Line 56:
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 76: Line 80:
end
end
end
end
end
else

if empty then
ret:tag('dd')
ret:tag('dd')
:wikitext("''No room features found''[[Category:Empty room features]] ")
:wikitext("''No room features found" .. require('Module:Purge')._purge{ anchor = 'roomfeatures_purge', text = '(refresh)', tag = 'sup' } .. "''[[Category:Empty room features]]")
:wikitext(require('Module:Purge')._purge{ anchor = 'roomfeatures_purge', text = '(refresh)' })
:done()
:done()
end
end