Module:etymology/templates/internal

This module is used by Module:etymology/templates and its submodules and is not meant to be used from anywhere else.


-- For internal use only with [[Module:etymology/templates]] and its submodules.
local process_params = require("Module:parameters").process

local export = {}

function export.fetch_lang(lang, param)
	return require("Module:languages").getByCode(lang, param)
end

function export.fetch_source(code, param, disallow_family)
	return require("Module:languages").getByCode(code, param, true, not disallow_family)
end

function export.fetch_script(sc, param)
	return require("Module:scripts").getByCode(sc, param)
end

do
	local function get_params(frame, has_text, no_family)
		local alias_of_t = {alias_of = "t"}
		local boolean = {type = "boolean"}
		local plain = {}
		local params = {
			[1] = {
				required = true,
				type = "language",
				default = "und"
			},
			[2] = {
				required = true,
				sublist = true,
				type = "language",
				etym_lang = true,
				family = not no_family,
				default = "und"
			},
			[3] = plain,
			[4] = {alias_of = "alt"},
			[5] = alias_of_t,
			
			["alt"] = plain,
			["cat"] = plain,
			["g"] = {list = true},
			["gloss"] = alias_of_t,
			["id"] = plain,
			["lit"] = plain,
			["pos"] = plain,
			["t"] = plain,
			["tr"] = plain,
			["ts"] = plain,
			["sc"] = {type = "script"},
			["senseid"] = plain,
	
			["nocat"] = boolean,
			["sort"] = plain,
			["conj"] = plain,
		}
		if has_text then
			params["notext"] = boolean
			params["nocap"] = boolean
		end
		return process_params(frame:getParent().args, params)
	end
	
	function export.parse_2_lang_args(frame, has_text, no_family)
		local args = get_params(frame, has_text, no_family)
		local sources = args[2]
		return args, args[1], {
			lang = sources[#sources],
			sc = args["sc"],
			term = args[3],
			alt = args["alt"],
			id = args["id"],
			genders = args["g"],
			tr = args["tr"],
			ts = args["ts"],
			gloss = args["t"],
			pos = args["pos"],
			lit = args["lit"]
		}, #sources > 1 and sources or nil
	end
end

return export