Module:wikimedia languages/templates

From Wiktionary, the free dictionary
Jump to navigation Jump to search
This module needs documentation.
Please document this module by describing its purpose and usage on the documentation page.

local export = {}

function export.exists(frame, fallback)
	local args = frame.args
	local lang = args[1] or error("Wikimedia language code has not been specified. Please pass parameter 1 to the module invocation.")
	
	lang = require("Module:wikimedia languages")[(fallback and "getByCodeWithFallback" or "getByCode")](lang)
	
	if lang then
		return "1"
	else
		return ""
	end
end

function export.existsWithFallback(frame)
	return export.exists(frame, true)
end

function export.getByCode(frame, fallback)
	local args = frame.args
	local langcode = args[1] or error("Wikimedia language code has not been specified. Please pass parameter 1 to the module invocation.")
	local itemname = args[2] or error("Type of information to look up has not been specified. Please pass parameter 2 to the module invocation.")
	
	local lang = require("Module:wikimedia languages")[(fallback and "getByCodeWithFallback" or "getByCode")](langcode)
	
	if not lang then
		error("The wikimedia language code '" .. langcode .. "' is not valid.")
	end
	
	-- The item that the caller wanted to look up
	if itemname == "getAllNames" then
		local index = args[3]; if index == "" then index = nil end
		index = tonumber(index or error("Please specify the numeric index of the desired name."))
		return lang:getAllNames()[index] or ""
	elseif itemname == "getWiktionaryLanguage" then
		return lang:getWiktionaryLanguage():getCode()
	elseif lang[itemname] then
		local ret = lang[itemname](lang)
		
		if type(ret) == "string" then
			return ret
		else
			error("The function \"" .. itemname .. "\" did not return a string value.")
		end
	else
		error("Requested invalid item name \"" .. itemname .. "\".")
	end
end

function export.getByCodeWithFallback(frame)
	return export.getByCode(frame, true)
end

return export