Module:nyms

From Laenkea
Revision as of 20:33, 5 March 2024 by TheNightAvl (talk | contribs)
Jump to navigation Jump to search

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

local export = {}

local m_inline = require("Module:inline")
local m_languages = require("Module:languages")
local m_links = require("Module:links")
local m_parameters = require("Module:parameters")

local params = {
	[1] = {required = true},
	[2] = {list = true},
	["t"] = {list = true, allow_holes = true},
	["pos"] = {list = true, allow_holes = true},
}

function export.make_nym_list(data)
	local links = {}
	local plural = ""
	for i, term in ipairs(data.terms) do
		local i_term, i_args = m_inline.parse(term)
		table.insert(
			links,
			m_links.full_link{
				term = i_term,
				language = data.language,
				gloss = i_args["t"] or data.glosses[i],
				pos = i_args["pos"] or data.pos[i],
			}
		)
	end
	if #links > 1 then plural = "s" end
	return '<span class="nyms" data-label="' .. data.label .. 's"><span class="nyms-label">' .. data.label:gsub("^%l", string.upper) .. plural .. ':</span> ' .. table.concat(links, ", ") .. '</span>'
end

function export.show(frame)
	local args = m_parameters.process(frame:getParent().args, params)
	return export.make_nym_list{
		label = frame.args[1],
		language = m_languages.get_by_code(args[1]),
		terms = args[2],
		pos = args["pos"],
		glosses = args["t"],
	}
end

return export