Module:category tree/poscatboiler/data/lang-specific/nn

From Wiktionary, the free dictionary
Jump to navigation Jump to search

This module handles generating the descriptions and categorization for Norwegian Nynorsk category pages of the format "Norwegian Nynorsk LABEL" where LABEL can be any text. Examples are Category:Bulgarian conjugation 2.1 verbs and Category:Russian velar-stem neuter-form nouns. This module is part of the poscatboiler system, which is a general framework for generating the descriptions and categorization of category pages.

For more information, see Module:category tree/poscatboiler/data/lang-specific/documentation.

NOTE: If you add a new language-specific module, you must add the language code to the list at the top of Module:category tree/poscatboiler/data/lang-specific in order for the module to be recognized.


local labels = {}
local handlers = {}


--------------------------------- Nouns/Pronouns/Numerals --------------------------------

local gender_decls = {
	{"m", "consonant"},
	{"m", "a"},
	{"m", "an"},
	{"m", "i"},
	{"f", "consonant"},
	{"f", "ō"},
	{"f", "ōn"},
	{"f", "ijō"},
	{"n", "a"},
	{"n", "an"},
}

local gender_code_to_gender = {
	m = "masculine",
	f = "feminine",
	n = "neuter",
}

local seen_decls = {}

for _, pos in ipairs({"nouns"}) do
	for _, gender_decl in ipairs(gender_decls) do
		local gender, decl = unpack(gender_decl)
		if not seen_decls[decl] then
			labels[decl .. "-stem " .. pos] = {
				description = "Norwegian Nynorsk ''" .. decl .. "''-stem " .. pos .. ".",
				additional = "Note that the stem class is named from the perspective of Proto-Germanic, and the stem suffix may no longer be visible synchronically.",
				breadcrumb = {name = decl .. "-stem", nocap = decl ~= "consonant"},
				parents = {{
					name = pos .. " by inflection type",
					sort = decl,
				}},
			}
			seen_decls[decl] = true
		end
		gender = gender_code_to_gender[gender]
		labels[gender .. " " .. decl .. "-stem " .. pos] = {
			description = "Norwegian Nynorsk " .. gender .. " ''" .. decl .. "''-stem " .. pos .. ".",
			additional = "Note that the stem class is named from the perspective of Proto-Germanic, and the stem suffix may no longer be visible synchronically.",
			breadcrumb = gender .. " " .. decl .. "-stem",
			parents = {{
				name = pos .. " by inflection type",
				sort = decl,
			}, {
				name = decl .. "-stem " .. pos,
				sort = gender,
			}},
		}
	end
end


--------------------------------- Miscellaneous --------------------------------

local known_reform_years = require("Module:table/listToSet") {
	"1901", "1917", "1938", "1959", "2012"
}

table.insert(handlers, function(data)
	local year = data.label:match("^pre%-([0-9]+) forms$")
	if year then
		return {
			description = "{{{langname}}} forms that become nonstandard after " .. (
				known_reform_years[year] and (
					"the [[Wiktionary:Norwegian Nynorsk spelling reforms#%s|spelling reform of %s]]."
				):format(year, year) or (
					"[[Wiktionary:Norwegian Nynorsk spelling reforms|spelling decisions]] made in %s."
				):format(year)
			),
			breadcrumb = year,
			parents = {{name = "superseded forms", sort = year}},
		}
	end
end)

return {LABELS = labels, HANDLERS = handlers}