This module provides the data for Module:form of and the templates that use it.


local tags = {}

-- Person
tags["first-person"] = {
	tag_type = "person",
	glossary = "first person",
	shortcuts = {"1"},
}

tags["ikinci şəxs"] = {
	tag_type = "person",
	glossary = "ikinci şəxs",
	shortcuts = {"2"},
}

tags["third-person"] = {
	tag_type = "person",
	glossary = "third person",
	shortcuts = {"3"},
}

tags["impersonal"] = {
	tag_type = "person",
	glossary = "impersonal",
	shortcuts = {"impers"},
}

-- Number
tags["tək"] = {
	tag_type = "say",
	glossary = "Tək",
	shortcuts = {"s"},
}

tags["dual"] = {
	tag_type = "number",
	glossary = "dual number",
	shortcuts = {"d"},
}

tags["trial"] = {
	tag_type = "number",
	glossary = "trial number",
	shortcuts = {"tr"},
}

tags["paucal"] = {
	tag_type = "number",
	glossary = "paucal number",
	shortcuts = {"pau"},
}

tags["distributive paucal"] = {
	tag_type = "number",
	glossary = "distributive paucal number",
	shortcuts = {"dpau"},
}

tags["cəm"] = {
	tag_type = "number",
	glossary = "cəm",
	shortcuts = {"p"},
}

tags["singulative"] = {
	tag_type = "number",
	glossary = "singulative number",
	shortcuts = {"sgl"},
}

tags["collective"] = {
	tag_type = "number",
	glossary = "collective number",
	shortcuts = {"col"},
}

-- Gender
tags["masculine"] = {
	tag_type = "gender",
	glossary = "gender",
	shortcuts = {"m"},
}

tags["feminine"] = {
	tag_type = "gender",
	glossary = "gender",
	shortcuts = {"f"},
}

tags["neuter"] = {
	tag_type = "gender",
	glossary = "gender",
	shortcuts = {"n"},
}

tags["common"] = {
	tag_type = "gender",
	glossary = "gender",
	shortcuts = {"c"},
}

tags["virile"] = {
	tag_type = "gender",
	glossary = "virile",
	shortcuts = {"vr"},
}

tags["nonvirile"] = {
	tag_type = "gender",
	glossary = "nonvirile",
	shortcuts = {"nv"},
}

-- Animacy (may be useful sometimes for [[Module:object usage]].)
tags["animate"] = {
	tag_type = "animacy",
	glossary = "animate",
	shortcuts = {"an"},
}

tags["inanimate"] = {
	tag_type = "animacy",
	glossary = "inanimate",
	shortcuts = {"in"},
}

tags["personal"] = {
	tag_type = "animacy",
	shortcuts = {"pr"},
}

-- Tense/aspect
tags["present"] = {
	tag_type = "tense-aspect",
	glossary = "present tense",
	shortcuts = {"pres"},
}

tags["past"] = {
	tag_type = "tense-aspect",
	glossary = "past tense",
}

tags["future"] = {
	tag_type = "tense-aspect",
	glossary = "future tense",
	shortcuts = {"fut", "futr"},
}

tags["non-past"] = {
	tag_type = "tense-aspect",
	glossary = "non-past tense",
	shortcuts = {"npast"},
}

tags["progressive"] = {
	tag_type = "tense-aspect",
	glossary = "progressive",
	shortcuts = {"prog"},
}

tags["preterite"] = {
	tag_type = "tense-aspect",
	shortcuts = {"pret"},
}

tags["perfect"] = {
	tag_type = "tense-aspect",
	shortcuts = {"perf"},
}

tags["imperfect"] = {
	tag_type = "tense-aspect",
	glossary = "imperfect",
	shortcuts = {"impf", "imperf"},
}

tags["pluperfect"] = {
	tag_type = "tense-aspect",
	shortcuts = {"plup", "pluperf"},
}

tags["semelfactive"] = {
	tag_type = "tense-aspect",
	shortcuts = {"semf"},
}

tags["aorist"] = {
	tag_type = "tense-aspect",
	shortcuts = {"aor", "aori"},
}

tags["past historic"] = {
	tag_type = "tense-aspect",
	shortcuts = {"phis"},
}

tags["imperfective"] = {
	tag_type = "tense-aspect",
	glossary = "imperfective",
	shortcuts = {"impfv", "imperfv"},
}

tags["perfective"] = {
	tag_type = "tense-aspect",
	glossary = "perfective",
	shortcuts = {"pfv", "perfv"},
}

-- Mood
tags["əmr halının"] = {
	tag_type = "mood",
	glossary = "əmr halı",
	shortcuts = {"imp", "impr"},
}

tags["iterative"] = {
	tag_type = "tense-aspect",
	shortcuts = {"iter"},
}

tags["indicative"] = {
	tag_type = "mood",
	glossary = "indicative mood",
	shortcuts = {"ind", "indc", "indic"},
}

tags["subjunctive"] = {
	tag_type = "mood",
	glossary = "subjunctive mood",
	shortcuts = {"sub", "subj"},
}

tags["conditional"] = {
	tag_type = "mood",
	glossary = "conditional mood",
	shortcuts = {"cond"},
}

tags["potential"] = {
	tag_type = "mood",
	shortcuts = {"potn"},
}

tags["jussive"] = {
	tag_type = "mood",
	glossary = "jussive mood",
	shortcuts = {"juss"},
}

tags["cohortative"] = {
	tag_type = "mood",
	shortcuts = {"coho", "cohort"},
}

-- Voice
tags["active"] = {
	tag_type = "voice",
	glossary = "active voice",
	shortcuts = {"act", "actv"},
}

tags["middle"] = {
	tag_type = "voice",
	glossary = "middle voice",
	shortcuts = {"mid", "midl"},
}

tags["passive"] = {
	tag_type = "voice",
	glossary = "passive voice",
	shortcuts = {"pass", "pasv"},
}

tags["mediopassive"] = {
	tag_type = "voice",
	glossary = "mediopassive",
	shortcuts = {"mp", "mpsv"},
}

-- Non-finite
tags["infinitive"] = {
	tag_type = "non-finite",
	shortcuts = {"inf"},
}

tags["participle"] = {
	tag_type = "non-finite",
	glossary = "participle",
	shortcuts = {"part", "ptcp"},
}

tags["possessive"] = {
	tag_type = "non-finite",
	shortcuts = {"poss"},
}

tags["negative"] = {
	tag_type = "non-finite",
	shortcuts = {"neg"},
}

tags["connegative"] = {
	tag_type = "non-finite",
	shortcuts = {"conn", "conneg"},
}

tags["supine"] = {
	tag_type = "non-finite",
	glossary = "supine",
	shortcuts = {"sup"},
}

-- Cases
tags["abessive"] = {
	tag_type = "case",
	shortcuts = {"abe"},
}

tags["ablative"] = {
	tag_type = "case",
	glossary = "ablative case",
	shortcuts = {"abl"},
}

tags["absolutive"] = {
	tag_type = "case",
	shortcuts = {"abs"},
}

tags["təsirlik"] = {
	tag_type = "hal",
	glossary = "Təsirlik hal",
	shortcuts = {"acc"},
}

tags["adessive"] = {
	tag_type = "case",
	shortcuts = {"ade"},
}

tags["adjectival"] = {
	tag_type = "case",
	shortcuts = {"adj"},
}

tags["adverbial"] = {
	tag_type = "case",
	glossary = "adverbial",
	shortcuts = {"adv"},
}

tags["allative"] = {
	tag_type = "case",
	shortcuts = {"all"},
}

tags["anterior"] = {
	tag_type = "case",
	shortcuts = {"ant"},
}

tags["causal-final"] = {
	tag_type = "case",
	shortcuts = {"cfi", "cfin"},
}

tags["comitative"] = {
	tag_type = "case",
	shortcuts = {"com"},
}

tags["dative"] = {
	tag_type = "case",
	glossary = "dative case",
	shortcuts = {"dat"},
}

tags["delative"] = {
	tag_type = "case",
	shortcuts = {"del"},
}

tags["elative"] = {
	tag_type = "case",
	glossary = "elative case",
	shortcuts = {"ela"},
}

tags["ergative"] = {
	tag_type = "case",
	glossary = "ergative case",
	shortcuts = {"erg"},
}

tags["essive-formal"] = {
	tag_type = "case",
	shortcuts = {"esf", "efor"},
}

tags["essive-modal"] = {
	tag_type = "case",
	shortcuts = {"esm", "emod"},
}

tags["essive"] = {
	tag_type = "case",
	shortcuts = {"ess"},
}

tags["genitive"] = {
	tag_type = "case",
	glossary = "genitive case",
	shortcuts = {"gen"},
}

tags["illative"] = {
	tag_type = "case",
	shortcuts = {"ill"},
}

tags["inessive"] = {
	tag_type = "case",
	shortcuts = {"ine"},
}

tags["instructive"] = {
	tag_type = "case",
	shortcuts = {"ist"},
}

tags["instrumental"] = {
	tag_type = "case",
	glossary = "instrumental case",
	shortcuts = {"ins"},
}

tags["locative"] = {
	tag_type = "case",
	glossary = "locative case",
	shortcuts = {"loc"},
}

tags["nominative"] = {
	tag_type = "case",
	glossary = "nominative case",
	shortcuts = {"nom"},
}

tags["oblique"] = {
	tag_type = "case",
	glossary = "oblique case",
	shortcuts = {"obl"},
}

tags["partitive"] = {
	tag_type = "case",
	glossary = "partitive case",
	shortcuts = {"par"},
}

tags["prepositional"] = {
	tag_type = "case",
	glossary = "prepositional case",
	shortcuts = {"pre", "prep"},
}

tags["sociative"] = {
	tag_type = "case",
	glossary = "sociative case",
	shortcuts = {"soc"},
}

tags["sublative"] = {
	tag_type = "case",
	shortcuts = {"sbl"},
}

tags["superessive"] = {
	tag_type = "case",
	shortcuts = {"spe"},
}

tags["temporal"] = {
	tag_type = "case",
	shortcuts = {"tem", "temp"},
}

tags["terminative"] = {
	tag_type = "case",
	shortcuts = {"ter", "term"},
}

tags["translative"] = {
	tag_type = "case",
	shortcuts = {"tra", "tran"},
}

tags["vocative"] = {
	tag_type = "case",
	glossary = "vocative case",
	shortcuts = {"voc"},
}

-- State
tags["construct"] = {
	tag_type = "state",
	glossary = "construct state",
	shortcuts = {"cons", "construct state"},
}

tags["müəyyən"] = {
	tag_type = "state",
	glossary = "Müəyyən",
	shortcuts = {"def", "defn", "definite state"},
}

tags["indefinite"] = {
	tag_type = "state",
	glossary = "indefinite",
	shortcuts = {"indef", "indf", "indefinite state"},
}

-- Other tags
tags["and"] = {
	tag_type = "other",
}

local shortcuts = {}

-- Create the shortcuts list
for name, data in pairs(tags) do
	if data.shortcuts then
		for _, shortcut in ipairs(data.shortcuts) do
			-- If the shortcut is already in the list, then there is a duplicate.
			if shortcuts[shortcut] then
				error("The shortcut \"" .. shortcut .. "\" (for the grammar tag \"" .. name .. "\") conflicts with an existing shortcut for the tag \"" .. shortcuts[shortcut] .. "\".")
			elseif tags[shortcut] then
				error("The shortcut \"" .. shortcut .. "\" (for the grammar tag \"" .. name .. "\") conflicts with an existing tag with that name.")
			end
			
			shortcuts[shortcut] = name
		end
	end
end

return {tags = tags, shortcuts = shortcuts}