Module:Room features: Difference between revisions
Jump to navigation
Jump to search
Content added Content deleted
No edit summary |
No edit summary |
||
Line 17: | Line 17: | ||
'[[Located in::' .. location .. ']]', |
'[[Located in::' .. location .. ']]', |
||
'?Location object#-', |
'?Location object#-', |
||
'?Location object.Name', |
'?Location object.Name=name_sub', |
||
'?Location object.Image#-', |
'?Location object.Image#-=image_sub', |
||
'?Location object.Infobox', |
'?Location object.Infobox=infobox_sub', |
||
'?Location quantity' |
'?Location quantity', |
||
'?#-', |
|||
'?Name=name', |
|||
'?Image#-=image', |
|||
'?Infobox=infobox' |
|||
} |
} |
||
return ret |
return ret |
||
Line 37: | Line 41: | ||
end |
end |
||
for i,v in ipairs(query) do |
for i,v in ipairs(query) do |
||
local key = infobox_cat_map[v. |
local key = infobox_cat_map[v.infobox_sub or v.infobox] |
||
table.insert(results_by_type[key], v) |
table.insert(results_by_type[key], v) |
||
end |
end |
||
Line 46: | Line 50: | ||
local gallery = '<gallery>\n' |
local gallery = '<gallery>\n' |
||
for i,v in ipairs(results) do |
for i,v in ipairs(results) do |
||
local image = v. |
local image = v.image_sub or v.image or 'File:Section anchor light.svg' |
||
local quantity = '' |
local quantity = '' |
||
if v['Location quantity'] ~= 'Unknown' then |
if v['Location quantity'] and v['Location quantity'] ~= 'Unknown' then |
||
quantity = string.format('%s × ', v['Location quantity']) |
quantity = string.format('%s × ', v['Location quantity']) |
||
end |
end |
||
gallery = gallery .. string.format('%s|%s[[%s|%s]]\n', image, quantity, v['Location object'], v. |
gallery = gallery .. string.format('%s|%s[[%s|%s]]\n', image, quantity, v['Location object'] or v[1], v.name_sub or v.name) |
||
end |
end |
||
gallery = gallery .. '</gallery>\n\n' |
gallery = gallery .. '</gallery>\n\n' |
||
Line 59: | Line 63: | ||
end |
end |
||
end |
end |
||
mw.log(ret) |
|||
return frame:preprocess(ret) |
return frame:preprocess(ret) |
Revision as of 23:24, 4 November 2024
Module documentation
This documentation is transcluded from Module:Room features/doc. [edit] [history] [purge]
This module does not have any documentation. Please consider adding documentation at Module:Room features/doc. [edit]
Module:Room features's function main is invoked by Template:Room features.
local p = {}
function p.main(frame)
local args = frame:getParent().args
return p._main(args)
end
local infobox_cat_map = {
['Monster'] = 'Monsters',
['NPC'] = 'Non-player characters',
['Scenery'] = 'Scenery',
['Skill_node'] = 'Skill nodes'
}
function base_query(location)
local ret = {
'[[Located in::' .. location .. ']]',
'?Location object#-',
'?Location object.Name=name_sub',
'?Location object.Image#-=image_sub',
'?Location object.Infobox=infobox_sub',
'?Location quantity',
'?#-',
'?Name=name',
'?Image#-=image',
'?Infobox=infobox'
}
return ret
end
function p._main(args)
local frame = mw.getCurrentFrame()
local ret = ''
local location = args[1] or mw.title.getCurrentTitle()
local query = mw.smw.ask(base_query(location))
if query ~= nil then
local results_by_type = {}
for i,v in pairs(infobox_cat_map) do
results_by_type[v] = {}
end
for i,v in ipairs(query) do
local key = infobox_cat_map[v.infobox_sub or v.infobox]
table.insert(results_by_type[key], v)
end
for cat,results in pairs(results_by_type) do
if #results > 0 then
ret = ret .. '===' .. cat .. '===\n'
local gallery = '<gallery>\n'
for i,v in ipairs(results) do
local image = v.image_sub or v.image or 'File:Section anchor light.svg'
local quantity = ''
if v['Location quantity'] and v['Location quantity'] ~= 'Unknown' then
quantity = string.format('%s × ', v['Location quantity'])
end
gallery = gallery .. string.format('%s|%s[[%s|%s]]\n', image, quantity, v['Location object'] or v[1], v.name_sub or v.name)
end
gallery = gallery .. '</gallery>\n\n'
ret = ret .. gallery
end
end
end
mw.log(ret)
return frame:preprocess(ret)
end
return p