Module:ny

local gsub = mw.ustring.gsub local u = require("Module:string/char")

local export = {}

function export.new(frame) local title = mw.title.getCurrentTitle.text local args = frame:getParent.args local pos = args[1] or "" local def = args[2] or "" local pos2 = args[3] or (args[4] and "" or false) local def2 = args[4] or "" local pos3 = args[5] or (args[6] and "" or false) local def3 = args[6] or "" local etym = args["e"] or false local head = args["h"] or false local cat = args["cat"] or false local usage = args["un"] or false local class = args["c"] or false local plural = args["pl"] or false local class2 = args["c2"] or false local plural2 = args["pl2"] or false local class3 = args["c3"] or false local plural3 = args["pl3"] or false local result = "" local function genTitle(text) local pos_title = { [""] = "Noun", ["n"] = "Noun", ["pn"] = "Proper noun", ["propn"] = "Proper noun", ["pron"] = "Pronoun", ["v"] = "Verb", ["vf"] = "Verb", ["a"] = "Adjective", ["adj"] = "Adjective", ["adv"] = "Adverb", ["prep"] = "Preposition", ["postp"] = "Postposition", ["conj"] = "Conjunction", ["part"] = "Particle", ["suf"] = "Suffix", ["prov"] = "Proverb", ["id"] = "Idiom", ["ph"] = "Phrase", ["intj"] = "Interjection", ["interj"] = "Interjection", ["num"] = "Numeral", ["abb"] = "Abbreviation", ["deter"] = "Determiner" };		return pos_title[text] or mw.ustring.upper(mw.ustring.sub(text, 1, 1)) .. mw.ustring.sub(text, 2, -1) end local function genHead(text) local pos_head = { [""] = "noun", ["n"] = "noun", ["pn"] = "proper noun", ["propn"] = "proper noun", ["v"] = "verb", ["vf"] = "verb form", ["a"] = "adj", ["prep"] = "preposition", ["conj"] = "con", ["part"] = "particle", ["pron"] = "pronoun", ["prov"] = "proverb", ["id"] = "idiom", ["ph"] = "phrase", ["intj"] = "interj", ["abb"] = "abbr", ["deter"] = "det" };		return pos_head[text] or text end local function other(class, title, args) local code = "" if args[class] then if (mw.ustring.gmatch(args[class], "^-")) then code = code .. "\n\n===" .. title .. "===\n* " .. args[class] .. ""			else code = code .. "\n\n===" .. title .. "===\n* " end end for i=1,6 do if args[class .. i] then if (mw.ustring.gmatch(args[class..i], "^-")) then code = code .. "\n* " .. args[class..i] .. ""				else code = code .. "\n* " end end end return code end result = result .. "==Chichewa==" if args["wp"] then result = result .. "\n" end result = result .. other("alt", "Alternative forms", args) if etym then result = result .. "\n\n===Etymology===\n" .. etym end result = result .. "\n\n===Pronunciation===\n* " result = result .. "\n\n===" .. genTitle(pos) .. "===\n\n\n# " .. def result = result .. other("syn", "=Synonyms=", args) result = result .. other("ant", "=Antonyms=", args) result = result .. other("rel", "=Related terms=", args) result = result .. other("der", "=Derived terms=", args) if vder then result = result .. "\n\n====Derived terms====\n" .. vder end result = result .. other("also", "=See also=", args) if usage then result = result .. "\n\n====Usage notes====\n" .. usage end if pos2 then result = result .. "\n\n===" .. genTitle(pos2) .. "===\n\n\n# " .. def2 end if pos3 then result = result .. "\n\n===" .. genTitle(pos3) .. "===\n\n\n# " .. def3 end if cat then result = result .. "\n\n" end return result end

function export.acute_on_first_vowel(frame) local word = frame.args[1] if not word then return "" end -- Decompose word, find first vowel, add acute to it if it doesn't have one, -- remove second return value. -- Recomposing unnecessary. local acute = u(0x0301) return (gsub( mw.ustring.toNFD(word), "([AaEeIiOoUu])" .. acute .. "?",		"%1" .. acute, 1)) end

return export