Module:Sandbox/Tollens/Contentious topics/list

From WikiProjectMed
Jump to navigation Jump to search
local p = {}

local data = mw.loadJsonData("Module:Sandbox/Tollens/Contentious topics/data.json")

function p._normalizeCode(code)
	return data.names[string.lower(code)]
end

function p._codeExists(code)
	return p._normalizeCode(code) ~= nil
end

function p._scope(code)
	code = p._normalizeCode(code)

	return code and data.details[code].scope or nil
end

function p._link(code)
	code = p._normalizeCode(code)

	return code and data.details[code].link or nil
end

function p._topicSubpage(code)
	code = p._normalizeCode(code)

	return code and data.details[code].topicSubpage or nil
end

function p.list(frame)
	local args = frame:getParent().args

	local request = nil
	local code = nil
	for k, v in pairs(args) do
		if request ~= nil then
			return "<strong class='error'>Only one argument is allowed ([[Template:Contentious topics/list|help]])</strong>"
		end

		request = k
		code = v
	end

	if request == nil then
		return "<strong class='error'>No argument was provided ([[Template:Contentious topics/list|help]])</strong>"
	end

	if request == "code exists" then
		return p._codeExists(code) and "yes" or "no"
	elseif request == "scope" then
		return p._scope(code) or "<strong class='error'>Invalid code ([[Template:Contentious topics/list|help]])</strong>"
	elseif request == "link" then
		return p._link(code) or "<strong class='error'>Invalid code ([[Template:Contentious topics/list|help]])</strong>"
	elseif request == "topic-subpage" then
		return p._topicSubpage(code) or "<strong class='error'>Invalid code ([[Template:Contentious topics/list|help]])</strong>"
	else
		return "<strong class='error'>Invalid argument ([[Template:Contentious topics/list|help]])</strong>"
	end
end

return p