Module:SwitchClass

Lua
CodeDiscussionLinksLink count SubpagesDocumentationTestsResultsSandboxLive code All modules

Documentation for this module may be created at Module:SwitchClass/doc

Code

local ptest = require "Module:PropertyPathTest"
local ids = require "Module:IDs"

local p={}
local function count_int_arguments(args)
	local p=0
	for k, v in ipairs(args) do
		p=p+1
	end
	return p
end

p.switch = function(frame)
	local item = ids.qid_normalize(frame.args["item"])
	local default = frame.args["default"]
	local cases = frame:getParent().args
	for i = 1, count_int_arguments(cases), 2 do
		if ptest.testInstance(
			item, 
			ids.qid_normalize(cases[i])
		) then
			return frame:expandTemplate{
				title = "Template:" .. cases[i+1], 
				args = { [1] = item}
			}
		end
	end
	if default then
		return frame:expandTemplate{
				title = "Template:" .. default, 
				args = { [1] = item}
		}
	end
end

return p