Module:User:Victar/headword/templates

local export = {}

-- Part of speech types that should not be pluralized. local invariable = mw.loadData("Module:headword/data").invariable

function export.head_t(frame) local params = { [1] = {required = true, default = "und"}, ["sc"] = {}, ["cat sc"] = {}, ["sort"] = {}, [2] = {required = true, default = "nouns"}, ["cat2"] = {}, ["cat3"] = {}, ["cat4"] = {}, ["head"] = {list = true, allow_holes = true, default = ""}, ["id"] = {}, ["tr"] = {list = true, allow_holes = true}, ["ts"] = {list = true, allow_holes = true}, ["g"] = {list = true}, [3] = {list = true, allow_holes = true}, ["f=accel"]  = {list = true, allow_holes = true}, ["f=request"] = {list = true, allow_holes = true}, ["f=alt"]    = {list = true, allow_holes = true}, ["f=sc"]     = {list = true, allow_holes = true}, ["f=id"]     = {list = true, allow_holes = true}, ["f=tr"]     = {list = true, allow_holes = true}, ["f=ts"]     = {list = true, allow_holes = true}, ["f=g"]      = {list = true, allow_holes = true}, ["f=qual"]   = {list = true, allow_holes = true}, ["f=nolink"] = {list = true, allow_holes = true, type = "boolean"}, ["f=lang"]   = {list = true, allow_holes = true}, }	local args = require("Module:parameters").process(frame:getParent.args, params) -- Get language and script information local data = {} data.lang = require("Module:languages").getByCode(args[1]) or require("Module:languages").err(args[1], 1) data.sort_key = args["sort"] data.heads = args["head"] data.id = args["id"] data.translits = args["tr"] data.transcripts = args["ts"] data.genders = args["g"] -- Script local cat_sc if args["cat sc"] then data.sc = (args["cat sc"] and (require("Module:scripts").getByCode(args["cat sc"]) or error("The script code \"" .. args["cat sc"] .. "\" is not valid.")) or nil) cat_sc = cat_sc else data.sc = (args["sc"] and (require("Module:scripts").getByCode(args["sc"]) or error("The script code \"" .. args["sc"] .. "\" is not valid.")) or nil) end -- Part-of-speech category data.pos_category = args[2] if not data.pos_category:find("s$") and not invariable[data.pos_category] then -- Make the plural form of the part of speech if data.pos_category:find("x$") then data.pos_category = data.pos_category .. "es" else data.pos_category = data.pos_category .. "s" end end if cat_sc then data.pos_category = data.pos_category .. " in " .. cat_sc:getCategoryName end -- Additional categories data.categories = {} if args["cat2"] then table.insert(data.categories, data.lang:getCanonicalName .. " " .. args["cat2"]) end if args["cat3"] then table.insert(data.categories, data.lang:getCanonicalName .. " " .. args["cat3"]) end if args["cat4"] then table.insert(data.categories, data.lang:getCanonicalName .. " " .. args["cat4"]) end -- Inflected forms data.inflections = {} for i = 1, math.ceil(args[3].maxindex / 2) do		local infl_part = { label   = args[3][i * 2 - 1], accel   = args["faccel"][i], request = args["frequest"][i], }		local form = { term      =  args[3][i * 2], alt       =  args["falt"][i], genders   = {args["fg"][i]}, id        =  args["fid"][i], lang      =  args["flang"][i], nolink    =  args["fnolink"][i], qualifiers = {args["fqual"][i]}, sc        =  args["fsc"][i], translit  =  args["ftr"][i], transcript = args["fts"][i], }		if form.lang then form.lang = require("Module:languages").getByCode(form.lang) or require("Module:languages").err(form.lang, "f" .. i .. "lang") end if form.sc then form.sc = require("Module:scripts").getByCode(form.sc) or error("The script code \"" .. form.sc .. "\" is not valid.") end -- If no term or alt is given, then the label is shown alone. if form.term or form.alt then table.insert(infl_part, form) end if infl_part.label == "or" then -- Append to the previous inflection part, if one exists if #infl_part > 0 and data.inflections[1] then table.insert(data.inflections[#data.inflections], form) end elseif infl_part.label then -- Add a new inflection part table.insert(data.inflections, infl_part) end end return require("Module:User:Victar/headword").full_headword(data) end

return export