Module:head/templates

From Laenkea
< Module:head
Revision as of 16:44, 6 August 2023 by Maria (talk | contribs) (Created page with "local export = {} local m_head = require("Module:head") local m_languages = require("Module:languages") local m_parameters = require("Module:parameters") local params = { [1] = {required = true}, [2] = {required = true}, [3] = {list = true}, ["g"] = {list = true}, ["head"] = {}, ["nocat"] = {type = "boolean"}, } local function get_inflections(list) local inflections = {} local i = 1 while list[i] do local inflection = {["label"] = list[i]} if not list[i+1...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Documentation for this module may be created at Module:head/templates/documentation

local export = {}

local m_head = require("Module:head")
local m_languages = require("Module:languages")
local m_parameters = require("Module:parameters")

local params = {
	[1] = {required = true},
	[2] = {required = true},
	[3] = {list = true},
	["g"] = {list = true},
	["head"] = {},
	["nocat"] = {type = "boolean"},
}

local function get_inflections(list)
	local inflections = {}
	local i = 1
	while list[i] do
		local inflection = {["label"] = list[i]}
		if not list[i+1] then
			error("unexpected end of inflection forms")
		elseif list[i+1] == "or" then
			error("unexpected 'or' keyword in label slot of inflection forms")
		end
		i = i + 1
		while list[i] do
			table.insert(inflection, list[i])
			if list[i+1] and list[i+1] == "or" then
				if not list[i+2] then
					error("unexpected end of inflection forms")
				end
				i = i + 2
			else
				i = i + 1
				break
			end
		end
		table.insert(inflections, inflection)
	end
	return inflections
end

local function get_data(args)
	local p = m_parameters.process(args, params)
	return {
		term = args["head"] or mw.title.getCurrentTitle().text,
		language = m_languages.get_by_code(p[1]),
		pos = p[2],
		genders = p["g"],
		inflections = get_inflections(p[3]),
	}
end

function export.show(frame)
	return m_head.full_head(get_data(frame:getParent().args))
end

return export