Module:xvn-headword

local export = {} local pos_functions = {}

local lang = require("Module:languages").getByCode("xvn")

-- The main entry point. -- This is the only function that can be invoked from a template. function export.show(frame) PAGENAME = mw.title.getCurrentTitle.text local args = frame:getParent.args local poscat = frame.args[1] or error("Part of speech has not been specified. Please pass parameter 1 to the module invocation.") local cat = args["cat"]; if cat == "" then cat = nil end local cat2 = args["cat2"]; if cat2 == "" then cat2 = nil end local cat3 = args["cat3"]; if cat3 == "" then cat3 = nil end local head = args["head"]; if head == "" then head = nil end local tr = args["tr"]; if tr == "" then tr = nil end local data = {lang = lang, pos_category = cat or poscat, categories = {}, heads = {head}, translits = {tr}, genders = {}, inflections = {}} if cat2 then table.insert(data.categories, "Vandalic " .. cat2) end if cat3 then table.insert(data.categories, "Vandalic " .. cat3) end if pos_functions[poscat] then pos_functions[poscat](args, data) end return require("Module:headword").full_headword(data) end

pos_functions["nouns"] = function(args, data) -- Iterate over all gn parameters (g2, g3 and so on) until one is empty local g = args[1] or ""; if g == "" then g = "?" end local i = 2 while g ~= "" do		-- If any of the specifications is a "?", add the entry -- to a cleanup category. if g == "m-p" or g == "f-p" or g == "n-p" then table.insert(data.categories, "Vandalic pluralia tantum") end table.insert(data.genders, g) g = args["g" .. i] or "" i = i + 1 end if #data.genders == 0 then table.insert(data.genders, "?") end end

pos_functions["proper nouns"] = pos_functions["nouns"]

pos_functions["adjectives"] = function(args, data) local comparative = args[1]; if comparative == "" then comparative = nil end local superlative = args[2]; if superlative == "" then superlative = nil end if comparative then table.insert(data.inflections, {label = "comparative", comparative}) end if superlative then table.insert(data.inflections, {label = "superlative", superlative}) end end

pos_functions["adverbs"] = pos_functions["adjectives"]

return export