Module:category tree/poscatboiler/data/lang-specific/ine-pro

This module handles generating the descriptions and categorization for Proto-Indo-European category pages of the format "Proto-Indo-European 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 = {}


--------------------------------- Verbs --------------------------------

local verb_conjs = {
	{"imperfective", {
		{"dʰh₁e-present",
			"ending in a thematic suffix <-dʰh₁e> in the present, which forms resultative verbs"},
		{"eh₁-stative",
			"ending in an athematic suffix <-eh₁> in the present, which forms [[inchoative]] (or [[fientive]]) verbs from perfective roots or nominals",
			"This ending, or its thematized derivative {{m|ine-pro|*-éh₁yeti}}, was highly productive in several daughter languages, becoming for example the {{m+|la|-eō}} verbs, the [[:Category:Proto-Germanic class 3 weak j-present verbs|class 3 weak Germanic verbs]] and the Slavic verbs in {{m|sla-pro|*-ěti}}."
		},
		{"i-reduplicated root athematic",
			"whose present is of the form <C₁íC₁eC₂ti>"},
		{"i-reduplicated root thematic",
			"whose present is of the form <C₁íC₁C₂eti>"},
		{"lengthened-grade root athematic",
			"with a lengthened stressed <ē> vowel in the present (also known as ''Narten presents'')"},
		{"nasal-infixed present",
			"whose present is of the athematic form <CR̥néCti>, i.e. with an infixed <n> that does not appear outside the present stem"},
		{"nu-present",
			"whose present ends in athematic <-néwti> (<-nu-> in the dual and plural)",
			"These verbs originated as [[:Category:Proto-Indo-European nasal-infixed present verbs|nasal-infix]] verbs, but took on a life of their own in several daughter languages."
		},
		{"reduplicated root athematic",
			"whose present is of the form <C₁éC₁eC₂ti>"},
		{"root athematic",
			"whose present is of the form <C₁éC₂ti>"},
		{"root thematic",
			"whose present is of the form <C₁éC₂eti>",
			"Many of these verbs were thematized from originally athematic formations. Contrast [[:Category:Proto-Indo-European zero-grade root thematic verbs|zero-grade root thematic verbs]], which have stress on the thematic ending and zero grade in the root."
		},
		{"sḱe-present",
			"whose present ends in thematic <-sḱéti> with zero grade in the root"},
		{"ye-denominative",
			"whose present ends in thematic <-yéti> added onto the stem of a noun"},
		{"ye-present",
			"whose present ends in thematic <-yeti> with stressed <e>-grade in the root",
			"Contrast [[:Category:Proto-Indo-European zero-grade ye-present verbs|zero-grade ye-present verbs]], which have stress on the thematic ending and zero grade in the root."
		},
		{"zero-grade root thematic",
			"whose present is of the form <C₁C₂éti> with zero grade in the root (also known as ''tudati''-presents)",
			"Contrast [[:Category:Proto-Indo-European root thematic verbs|(e-grade) root thematic verbs]], which have stress on the root with root <e>-grade."
		},
		{"zero-grade ye-present",
			"whose present ends in thematic <-yéti> with zero grade in the root",
			"Contrast [[:Category:Proto-Indo-European ye-present verbs|(unstressed) ye-present verbs]], which have stress on the root with root <e>-grade."
		},
	}},
	{"perfective", {
		{"reduplicated root thematic aorist",
			"whose aorist is of the form <C₁éC₁C₂et>"},
		{"root athematic aorist",
			"whose aorist is of the form <C₁éC₂t>"},
		{"root thematic aorist",
			"whose aorist is of the form <C₁C₂ét>",
			"These are analogous to [[:Category:Proto-Indo-European zero-grade root thematic verbs|zero-grade root thematic present verbs]] (so-called ''tudati''-present verbs)."
		},
		{"s-aorist",
			"whose aorist is formed with an athematic <-s-> suffix, with lengthened <ē>-grade in the root",
			"Compare [[:Category:Proto-Indo-European lengthened-grade root athematic verbs|lengthened-grade root athematic present verbs]] (so-called ''Narten-present'' verbs)."
		},
		{"zero-grade root athematic aorist",
			"whose aorist is of the form <C₁C₂t>",
			"Note that one of the consonants of the root must necessarily be a vocalized resonant <-R̥->, which bears the stress."
		},
		{"zero-grade root thematic aorist",
			"whose aorist is of the form <C₁C₂ét>"},
	}},
	{"stative", {
		{"reduplicated root perfect",
			"whose perfect is of the form <C₁eC₁óC₂e>"},
		{"root perfect",
			"whose perfect is of the form <C₁óC₂e>, without reduplication"},
	}},
}

for _, verb_type_spec in ipairs(verb_conjs) do
	local verb_type, verb_specs = unpack(verb_type_spec)
	for _, verb_spec in ipairs(verb_specs) do
		local verb_subtype, desc, addl = unpack(verb_spec)
		local function format_desc(ending)
			return (ending:gsub("<(.-)>", "{{m|ine-pro||%1}}"))
		end
		labels[verb_subtype .. " verbs"] = {
			description = ("{{{langname}}} %s verbs, %s."):format(verb_subtype, format_desc(desc)),
			additional = addl and format_desc(addl) or nil,
			breadcrumb = verb_subtype,
			parents = {verb_type .. " verbs"},
		}
	end
end


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

local noun_decls = {
	{"acrostatic",
		"These nouns have the accent on the first syllable of the stem in all cases. The difference between the direct and oblique cases is expressed with different ablaut grades of the stem.", {
		{"i-stem", "<-óCis>", "<-éCis>"},
		{"neuter men-stem", "<-óCmn̥>", "<-éCmn̥s>"},
		{"r-stem", "<-éCēr>", "<-éCr̥s>"},
		{"neuter r/n-stem", "<-óCr̥>", "<-éCn̥s>"},
		{"root", "<-óCs>", "<-Crés>"},
		{"neuter root", "<-V́Cōr>", "<-Crés>"},
		{"neuter s-stem", "<-éCos>", "<-éCesos>"},
		{"neuter u-stem", "<-V́Cōr>", "<-Crés>"},
	}},
	{"amphikinetic",
		"These nouns have the accent on the first syllable of the stem in the direct cases, and on the inflectional endings in the oblique cases.", {
		{"i-stem", "<-éCis>", "<-Cyés>"},
		{"m-stem", "<-éCōm>", "<-Cmés>"},
		{"men-stem", "<-éCmō>", "<-Cm̥nés>"},
		{"n-stem", "<-éCō>", "<-Cnés>"},
		{"r-stem", "<-éCōr> or <-éCōl>", "<-Crés> or <-Clés>"},
		{"neuter r/n-stem", "<-éCr̥> or <-óCr̥>", "<-Cnés>"},
		{"root", "<-éCs> or <-óCs> or <-ḗR> or <-ṓR>", "<-Cés> or <-Rés>"},
		{"neuter root", "<-éC>", "<-Cés>"},
		{"u-stem", "<-éCus>", "<-Cwés>"},
		{"neuter u-stem", "<-éCu>", "<-Cwés>"},
	}},
	{"hysterokinetic",
		"These nouns have the accent on the final syllable of the stem in the direct cases, and on the inflectional endings in the oblique cases.", {
		{"men-stem", "<-mḗn>", "<-m̥nés>"},
		{"n-stem", "<-eRCḗn> or <-R̥Cḗn>", "<-R̥Cnés>"},
		{"r-stem", "<-ḗr>", "<-rés>"},
		{"root", "<-éCs> or <-ḗR>", "<-Cés> or <-Rés>"},
	}},
	{"proterokinetic",
		"These nouns have the accent on the penultimate syllable of the stem in the direct cases, and on the final syllable of the stem in the oblique cases. The inflectional ending is never accented.", {
		{"i-stem", "<-éRCis>", "<-R̥Céys>"},
		{"neuter i-stem", "<-óCi>", "<-Céys>"},
		{"ih₂-stem", "<-éCih₂>", "<-Cyéh₂s>"},
		{"neuter men-stem", "<-éCmn̥>", "<-Cméns>"},
		{"neuter r/n-stem", "<-éCr̥> or <-óCr̥>", "<-Céns>"},
		{"root", "<-éCs>", "<-Cés>"},
		{"neuter root", "<-éCC> or <-óCC>", "<-CéCs>"},
		{"ti-stem", "<-éCtis>", "<-Ctéys>"},
		{"tu-stem", "<-éCtus>", "<-Ctéws>"},
		{"u-stem", "<-éCus>", "<-Céws>"},
		{"neuter u-stem", "<-éCu> or <-óCu>", "<-Céws>"},
	}},
	{"thematic",
		'These nouns contain a \"theme vowel\" between the stem and the ending, and show no stem ablaut or accent shifts.', {
		{"eh₂-stem", "<-eh₂> or <-éh₂>", "<-eh₂s> or <-éh₂s>",
			desc="{{{langname}}} nouns that contain a thematic vowel augmented with the feminine suffix *-h₂-.",
			addl="These nouns are thematic in terms of accent class, having the same grade and accent throughout the paradigm. The endings, however, are athematic."
		},
		{"o-stem", "<-os> or <-ós>", "<-osyo> or <-ósyo>"},
		{"neuter o-stem", "<-om> or <-óm>", "<-osyo> or <-ósyo>"},
	}},
}

for _, pos in ipairs({"nouns"}) do
	labels["thematic " .. pos] = {
		description = "{{{langname}}} " .. pos .. ' that contain a "theme vowel" between the stem and the ending, and show no stem ablaut or accent shifts.',
		breadcrumb = "thematic",
		parents = {pos .. " by inflection type"},
	}
	labels["athematic " .. pos] = {
		description = "{{{langname}}} " .. pos .. ' that have no "theme vowel" between the stem and the ending, and usually show stem ablaut and an accent shift.',
		breadcrumb = "athematic",
		parents = {pos .. " by inflection type"},
	}
	for _, noun_type_spec in ipairs(noun_decls) do
		local noun_type, type_addl, noun_specs = unpack(noun_type_spec)
		if noun_type ~= "thematic" then
			labels[noun_type .. " " .. pos] = {
				description = "{{{langname}}} " .. noun_type .. " " .. pos .. ".",
				additional = type_addl,
				breadcrumb = noun_type,
				parents = {"athematic " .. pos},
			}
		end
		for _, noun_spec in ipairs(noun_specs) do
			local noun_stem, nom_ending, gen_ending = unpack(noun_spec)
			local function format_stem(stem)
				return (stem:gsub("([^ ]*)%-stem", "''%1''-stem"))
			end
			local function format_ending(ending)
				return (ending:gsub("<(.-)>", "{{m|ine-pro||%1}}"))
			end
			local label = noun_type .. " " .. noun_stem .. " " .. pos
			local italicized_label = "{{{langname}}} " .. noun_type .. " " .. format_stem(noun_stem) .. " " .. pos
			labels[label] = {
				description = noun_spec.desc or italicized_label .. ".",
				additional = ("These %s typically end in %s in the nominative singular and %s in the genitive singular."):format(
					pos, format_ending(nom_ending), format_ending(gen_ending)),
				breadcrumb = {name = format_stem(noun_stem), nocap = not noun_stem:find("^neuter ")},
				displaytitle = italicized_label,
				parents = {{
					name = noun_type .. " " .. pos,
					sort = noun_stem:gsub("neuter ", ""),
				}},
			}
		end
	end
end

--------------------------------- Adjectives --------------------------------

labels["athematic adjectives"] = {
	description = "{{{langname}}} athematic adjectives.",
	additional = 'These adjectives have no "theme vowel" between the stem and the ending, and usually show stem ablaut and an accent shift.',
	breadcrumb = "athematic",
	parents = {"adjectives"},
}
labels["thematic adjectives"] = {
	description = "{{{langname}}} thematic adjectives.",
	additional = 'These adjectives contain a "theme vowel" between the stem and the ending, and show no stem ablaut or accent shifts.',
	breadcrumb = "thematic",
	parents = {"adjectives"},
}

local adj_descs = {
	{"amphikinetic",
		"These adjectives have the accent on the first syllable of the stem in the direct cases, and on the inflectional endings in the oblique cases."
	},
	{"hysterokinetic",
		"These adjectives have the accent on the final syllable of the stem in the direct cases, and on the inflectional endings in the oblique cases."
	},
	{"proterokinetic",
		"These adjectives have the accent on the penultimate syllable of the stem in the direct cases, and on the final syllable of the stem in the oblique cases. The inflectional ending is never accented."
	},
}

for _, adj_spec in ipairs(adj_descs) do
	local adj_type, addl = unpack(adj_spec)
	labels[adj_type .. " adjectives"] = {
		description = "{{{langname}}} " .. adj_type .. " adjectives.",
		additional = addl,
		breadcrumb = adj_type,
		parents = {"athematic adjectives"},
	}
end

--------------------------------- Roots --------------------------------

local root_descs = {
	{"adjectival",
		"{{{langname}}} roots that form primary adjectives, often according to the {{w|Caland system}}."},
	{"homonymic",
		"{{{langname}}} roots that have multiple, seemingly unrelated meanings."},
	{"imperfective",
		"{{{langname}}} roots whose default aspect is imperfective, durative, present tense."},
	{"perfective",
		"{{{langname}}} roots whose default aspect is perfective, punctual, aoristic."},
	{"stative",
		"{{{langname}}} roots whose default aspect is stative, perfect."},
}
labels["irregular-shape roots"] = {
	description = "{{{langname}}} roots with a shape that violates the [[w:Proto-Indo-European root#Shape of a root|known rules on root shapes]].",
	breadcrumb = "irregular-shape",
	parents = {{name = "roots by shape", sort = "*"}},
}
labels["roots with s-mobile"] = {
	topright = "{{wikipedia|Indo-European s-mobile}}",
	description = "{{{langname}}} roots with a mobile ''s'' at the beginning, which may or may not appear (typically with one variant predominating in a given daughter).",
	breadcrumb = {name = "s-mobile", nocap = true},
	parents = {{name = "roots by shape", sort = "s-mobile"}},
}

for _, root_spec in ipairs(root_descs) do
	local root_type, desc = unpack(root_spec)
	labels[root_type .. " roots"] = {
		description = desc,
		breadcrumb = root_type,
		parents = {"roots"},
	}
end

--------------------------------- Misc --------------------------------

labels["entries with more than one part of speech"] = {
	description = "This category is added by [[Module:reconstruction]], which is invoked by {{tl|reconstruction}}.",
	parents = {"entry maintenance"},
	hidden = true,
	can_be_empty = true,
}

return {LABELS = labels, HANDLERS = handlers}