Module:form of/templates: difference between revisions

From Wiktionary, the free dictionary
Jump to navigation Jump to search
Content deleted Content added
m neatened code
No edit summary
Line 97: Line 97:
[1] = {required = true},
[1] = {required = true},
[2] = {},
[2] = {},
[3] = {list = true},
[3] = {list = true, required = true},
["gloss"] = {},
["gloss"] = {},

Revision as of 11:04, 4 September 2017

export.template_tags

function export.template_tags(frame)

This function lacks documentation. Please add a description of its usages, inputs and outputs, or its difference from similar functions, or make it local to remove it from the function list.

export.form_of_t

function export.form_of_t(frame)

This function lacks documentation. Please add a description of its usages, inputs and outputs, or its difference from similar functions, or make it local to remove it from the function list.

export.inflection_of_t

function export.inflection_of_t(frame)

This function lacks documentation. Please add a description of its usages, inputs and outputs, or its difference from similar functions, or make it local to remove it from the function list.


local export = {}

function export.template_tags(frame)
	local iparams = {
		[1] = {list = true, required = true},
		["cat"] = {},
	}
	
	local iargs = require("Module:parameters").process(frame.args, iparams)
	
	local params = {
		[1] = {required = true},
		[2] = {},
		[3] = {alias_of = "gloss"},
		
		["gloss"] = {},
		["t"] = {alias_of = "gloss"},
		["id"] = {},
		["lang"] = {required = true},
		["nodot"] = {type = "boolean"},  -- does nothing right now, but used in existing entries
		["sc"] = {},
		["tr"] = {},
	}
	
	if iargs["cat"] then
		params["nocat"] = {type = "boolean"}
		params["sort"] = {}
	end
	
	local args = require("Module:parameters").process(frame:getParent().args, params)
	
	local lang = args["lang"] or "und"
	local sc = args["sc"]
	
	lang = require("Module:languages").getByCode(lang) or require("Module:languages").err(lang, "lang")
	sc = (sc and (require("Module:scripts").getByCode(sc) or error("The script code \"" .. sc .. "\" is not valid.")) or nil)
	
	if #iargs[1] == 1 and iargs[1][1] == "f" then
		require("Module:debug").track("feminine of/" .. lang:getCode())
	end
	
	local ret = require("Module:form of").tagged_inflections(iargs[1], {lang = lang, sc = sc, term = args[1] or "term", alt = args[2], id = args["id"], gloss = args["gloss"], tr = args["tr"]})
	
	if iargs["cat"] then
		if args["nocat"] then
			require("Module:debug").track("form of/" .. table.concat(iargs[1], "-") .. "/nocat")
		else
			require("Module:debug").track("form of/" .. table.concat(iargs[1], "-") .. "/cat")
			ret = ret .. require("Module:utilities").format_categories({lang:getCanonicalName() .. " " .. iargs["cat"]}, lang, args["sort"])
		end
	end
	
	return ret
end

function export.form_of_t(frame)
	local params = {
		[1] = {required = true},
		[2] = {required = true},
		[3] = {},
		[4] = {alias_of = "gloss"},
		
		["dot"] = {},
		["gloss"] = {},
		["t"] = {alias_of = "gloss"},
		["id"] = {},
		["lang"] = {required = lang == nil},
		["nodot"] = {type = "boolean"},
		["sc"] = {},
		["tr"] = {},
	}
	
	local args = require("Module:parameters").process(frame:getParent().args, params)
	
	local lang = args["lang"] or "und"
	local sc = sc or args["sc"]
	
	lang = require("Module:languages").getByCode(lang) or require("Module:languages").err(lang, "lang")
	sc = (sc and (require("Module:scripts").getByCode(sc) or error("The script code \"" .. sc .. "\" is not valid.")) or nil)
	
	return require("Module:form of").format_t(
		(args[1] or "form") .. " of",
		{
			lang = lang,
			sc = sc,
			term = args[2] or "term",
			alt = args[3],
			id = args["id"],
			gloss = args["gloss"],
			tr = args["tr"]
		}
	)
end

function export.inflection_of_t(frame)
	local params = {
		[1] = {required = true},
		[2] = {},
		[3] = {list = true, required = true},
		
		["gloss"] = {},
		["t"] = {alias_of = "gloss"},
		["id"] = {},
		["lang"] = {required = true},
		["nocap"] = {type = "boolean"},
		["nocat"] = {type = "boolean"},
		["nodot"] = {type = "boolean"},
		["pos"] = {},
		["sc"] = {},
		["tr"] = {},
	}
	
	local args = require("Module:parameters").process(frame:getParent().args, params)
	
	local lang = args["lang"] or "und"
	local sc = args["sc"]
	
	lang = require("Module:languages").getByCode(lang) or
		require("Module:languages").err(lang, "lang")
	sc = (sc and (require("Module:scripts").getByCode(sc) or
		error("The script code \"" .. sc .. "\" is not valid.")) or nil)
	
	return require("Module:form of").tagged_inflections(
		args[3],
		{
			lang = lang,
			sc = sc,
			term = args[1] or "term",
			alt = args[2],
			id = args["id"],
			gloss = args["gloss"],
			pos = args["pos"],
			tr = args["tr"]
		}
	)
end

return export