Module:mn-headword

local export = {}

local lang = require("Module:languages").getByCode("mn") local mn = require("Module:mn-common")

local params = { ["head"] = {}, --with no diacritics I don't think we'll need more than one head ["cat"] = {list = true}, [1] = {list = true} }

local function get_script(args) return lang:findBestScript(args["head"] or mw.title.getCurrentTitle.subpageText) end local function otherscript(inflections, args, sc, categories) if #args[1] < 1 then if sc then if sc:getCode == "Mong" then end end return end

local other_sc local scripts = { m = "Mong", c = "Cyrl", Mong = true, Cyrl = true, }	if scripts[args[1][1]] then other_sc = require("Module:scripts").getByCode(scripts[args[1][1]]) table.remove(args[1], 1) require("Module:debug").track("mn-headword/script-param") else other_sc = lang:findBestScript(args[1][1]) end if sc and sc:getCode == other_sc:getCode then error("The headword and the alternative spelling should be in different scripts.") end local spelling = {label = other_sc:getCanonicalName .. " spelling", sc = other_sc, enable_auto_translit=true} for i, arg in ipairs(args[1]) do		table.insert(spelling, arg) end table.insert(inflections, spelling) end

local function categorize(args) local cats = args["cat"] local categories = {} if cats then for i, arg in ipairs(cats) do table.insert(categories, lang:getCanonicalName .. " " .. arg) end end if (args["head"] or mw.title.getCurrentTitle.subpageText):find(" ") then table.insert(categories, lang:getCanonicalName .. " multiword terms") elseif mw.ustring.sub( mw.title.getCurrentTitle.subpageText, 1, 1 ) ~= "-" and get_script(args):getCode == "Cyrl" then table.insert(categories, lang:getCanonicalName .. " " .. #mn.syllables( mw.title.getCurrentTitle.subpageText ) .. "-syllable words" ) end return categories end

function export.basic(frame) local args = require("Module:parameters").process(frame:getParent.args, params) local inflections = {} local categories = categorize(args) local sc = get_script(args) otherscript(inflections, args, sc, categories) local data = {lang = lang, sc = sc, heads = {args["head"]}, genders = nil, inflections = inflections, pos_category = frame.args[1], categories = categories, sort_key = nil} return require("Module:headword").full_headword(data) end

function export.noun(frame)

params["pl"] = {list = true} params["dec"] = {} local args = require("Module:parameters").process(frame:getParent.args, params) local sc = get_script(args) local inflections = {} local categories = categorize(args) local declension = "" otherscript(inflections, args, sc, categories) if #args["pl"] > 0 then local plurals = {label = "definite plural"} for i, pl in ipairs(args["pl"]) do			table.insert(plurals, pl) end table.insert(inflections, plurals) end

if args["dec"] then declension = "; ("		if args["dec"] == "r" then			declension = declension .. "regular declension"			table.insert(categories, lang:getCanonicalName .. " regular declension nouns")		elseif args["dec"] == "n" then			declension = declension .. "hidden-n declension"			table.insert(categories, lang:getCanonicalName .. " hidden-n declension nouns")		elseif args["dec"] == "g" then			declension = declension .. "hidden-g declension"			table.insert(categories, lang:getCanonicalName .. " hidden-g declension nouns")		elseif args["dec"] == "m" then			declension = declension .. "mixed declension"			table.insert(categories, lang:getCanonicalName .. " mixed declension nouns")		else			--error("non-existent declension")		end		declension = declension .. ") " end local data = {lang = lang, sc = sc, heads = {args["head"]}, genders = nil, inflections = inflections, pos_category = "nouns", categories = categories, sort_key = nil} return require("Module:headword").full_headword(data) .. declension end

function export.verb(frame) params["caus"] = {list = true} params["pass"] = {list = true} local args = require("Module:parameters").process(frame:getParent.args, params) local inflections = {} local categories = categorize(args) local sc = get_script(args) otherscript(inflections, args, sc, categories) if #args["caus"] > 0 then causatives = {label = "causative"} for i, x in ipairs(args["caus"]) do			table.insert(causatives, x)		end table.insert(inflections, causatives) end if #args["pass"] > 0 then passives = {label = "passive"} for i, x in ipairs(args["pass"]) do			table.insert(passives, x)		end table.insert(inflections, passives) end

local data = {lang = lang, sc = sc, heads = {args["head"]}, genders = nil, inflections = inflections, pos_category = "verbs", categories = categories, sort_key = nil} return require("Module:headword").full_headword(data) end

return export