Module:Room features

Revision as of 15:00, 3 November 2024 by Habblet (talk | contribs)
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 categories = {
	'Non-player characters',
	'Monsters',
	'Skill nodes',
	'Scenery'
}

function base_query(location, category)
	return {
		'[[Has subobject::<q>[[Located in::' .. location .. ']]</q>]]',
		'[[Category:' .. category,
		'?#-',
		'?Name',
		'?Image#-',
	}
end

function p._main(args)
	local frame = mw.getCurrentFrame()
	local ret = ''
	local location = args[1] or mw.title.getCurrentTitle()
	
	for _,cat in ipairs(categories) do
		local query = mw.smw.ask(base_query(location, cat))
		if query ~= nil then
			ret = ret .. '===' .. cat .. '===\n'
			
			local gallery = '<gallery>\n'
			for i,v in ipairs(query or {}) do
				gallery = gallery .. (v.Image or 'File:Section anchor light.svg') .. '|' .. '[[' .. v[1] .. '|' .. v.Name .. ']]\n'
			end
			gallery = gallery .. '</gallery>\n\n'
			mw.log(gallery)
			
			ret = ret .. frame:preprocess(gallery)
		end
	end
	
	return ret
end

return p