Module:nyms: Difference between revisions

From Laenkea
Jump to navigation Jump to search
No edit summary
No edit summary
 
(3 intermediate revisions by 2 users not shown)
Line 1: Line 1:
local export = {}
local export = {}


local m_inline = require("Module:inline")
local m_languages = require("Module:languages")
local m_languages = require("Module:languages")
local m_links = require("Module:links")
local m_links = require("Module:links")
Line 8: Line 9:
[1] = {required = true},
[1] = {required = true},
[2] = {list = true},
[2] = {list = true},
["t"] = {list = true, allow_holes = true},
["pos"] = {list = true, allow_holes = true},
}
}


function export.make_nym_list(data)
function export.make_nym_list(data)
local links = {}
local links = {}
for _, term in ipairs(data.terms) do
local plural = ""
table.insert(links, m_links.full_link{term = term, language = data.language})
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
end
return '<span class="nyms" data-label="' .. data.label .. '"><span class="nyms-label">' .. data.label:gsub("^%l", string.upper) .. ':</span> ' .. table.concat(links, ", ") .. '</span>'
table.sort(links, function(a, b) return a < b 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
end


Line 24: Line 39:
language = m_languages.get_by_code(args[1]),
language = m_languages.get_by_code(args[1]),
terms = args[2],
terms = args[2],
pos = args["pos"],
glosses = args["t"],
}
}
end
end


return export
return export

Latest revision as of 19:47, 10 March 2024

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
	table.sort(links, function(a, b) return a < b 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