Module:root

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 = {}

local m_languages = require("Module:languages")

function export.categorize(lang, source, roots, ids, sort_key)
	local categories = {}
	
	if lang:getCode() ~= source:getCode() then
		table.insert(categories,
			lang:getCanonicalName() .. " terms derived from " .. source:getCanonicalName())
	end
	
	for index, root in ipairs(roots) do
		if lang:getCode() == source:getCode() then
			table.insert(categories,
				lang:getCanonicalName() .. " terms belonging to the root " .. root .. (ids[index] and " (" .. ids[index] .. ")" or ""))
		else
			table.insert(categories,
				lang:getCanonicalName() .. " terms derived from the " .. source:getCanonicalName() ..
						" root " .. root .. (ids[index] and " (" .. ids[index] .. ")" or ""))
		end
	end
	
	return require("Module:utilities").format_categories(categories, lang, sort_key)
end

function export.show(frame)
	local params = {
		[1] = { required = true },
		[2] = { required = true },
		[3] = { required = true, list = true },
		["id"] = { list = true, allow_holes = true },
		["sort"] = {},
	}
	
	local args = require("Module:parameters").process(frame:getParent().args, params)
	
	local lang = m_languages.getByCode(args[1]) or m_languages.error(args[1], 1)
	local source = m_languages.getByCode(args[2]) or m_languages.error(args[2], 2)
	
	return export.categorize(lang, source, args[3], args.id, args.sort)
end

return export