Differenze tra le versioni di "Modulo:Headword/templates"

Da Dialetto Metaurense.
Riga 20: Riga 20:
  
 
local params = {
 
local params = {
−
[1] = {required = true},
+
[1] = {required = true, default = "und"},
 
["sc"] = {},
 
["sc"] = {},
 
["cat sc"] = {},
 
["cat sc"] = {},
Riga 29: Riga 29:
 
["cat3"] = {},
 
["cat3"] = {},
 
 
−
["head"] = {},
+
["head"] = {list = true, allow_holes = true, default = ""},
−
["head2"] = {},
+
["tr"] = {list = true, allow_holes = true},
−
["head3"] = {},
+
["g"] = {list = true},
−
["head4"] = {},
 
−
["head5"] = {},
 
 
 
−
["tr"] = {},
+
[3] = {list = true, allow_holes = true},
−
["tr2"] = {},
 
−
["tr3"] = {},
 
−
["tr4"] = {},
 
−
["tr5"] = {},
 
 
 
−
["g"] = {},
+
["f1accel"]  = {}, ["f1request"]  = {}, ["f1alt"]  = {}, ["f1sc"]  = {}, ["f1id"]  = {}, ["f1tr"]  = {}, ["f1g"]  = {}, ["f1qual"]  = {}, ["f1nolink"]  = {type = "boolean"}, ["f1lang"]  = {},
−
["g2"] = {},
+
["f2accel"]  = {}, ["f2request"]  = {}, ["f2alt"]  = {}, ["f2sc"]  = {}, ["f2id"]  = {}, ["f2tr"]  = {}, ["f2g"]  = {}, ["f2qual"]  = {}, ["f2nolink"]  = {type = "boolean"}, ["f2lang"]  = {},
−
["g3"] = {},
+
["f3accel"]  = {}, ["f3request"]  = {}, ["f3alt"]  = {}, ["f3sc"]  = {}, ["f3id"]  = {}, ["f3tr"]  = {}, ["f3g"]  = {}, ["f3qual"]  = {}, ["f3nolink"]  = {type = "boolean"}, ["f3lang"]  = {},
−
["g4"] = {},
+
["f4accel"]  = {}, ["f4request"]  = {}, ["f4alt"]  = {}, ["f4sc"]  = {}, ["f4id"]  = {}, ["f4tr"]  = {}, ["f4g"]  = {}, ["f4qual"]  = {}, ["f4nolink"]  = {type = "boolean"}, ["f4lang"]  = {},
−
["g5"] = {},
+
["f5accel"]  = {}, ["f5request"]  = {}, ["f5alt"]  = {}, ["f5sc"]  = {}, ["f5id"]  = {}, ["f5tr"]  = {}, ["f5g"]  = {}, ["f5qual"]  = {}, ["f5nolink"]  = {type = "boolean"}, ["f5lang"]  = {},
−
+
["f6accel"]  = {}, ["f6request"]  = {}, ["f6alt"]  = {}, ["f6sc"]  = {}, ["f6id"]  = {}, ["f6tr"]  = {}, ["f6g"]  = {}, ["f6qual"]  = {}, ["f6nolink"]  = {type = "boolean"}, ["f6lang"]  = {},
−
[3]  = {allow_empty = true}, [4]  = {}, ["f1accel"]  = {}, ["f1request"]  = {}, ["f1alt"]  = {}, ["f1sc"]  = {}, ["f1id"]  = {}, ["f1tr"]  = {}, ["f1g"]  = {}, ["f1qual"]  = {}, ["f1nolink"]  = {type = "boolean"}, ["f1lang"]  = {},
+
["f7accel"]  = {}, ["f7request"]  = {}, ["f7alt"]  = {}, ["f7sc"]  = {}, ["f7id"]  = {}, ["f7tr"]  = {}, ["f7g"]  = {}, ["f7qual"]  = {}, ["f7nolink"]  = {type = "boolean"}, ["f7lang"]  = {},
−
[5]  = {allow_empty = true}, [6]  = {}, ["f2accel"]  = {}, ["f2request"]  = {}, ["f2alt"]  = {}, ["f2sc"]  = {}, ["f2id"]  = {}, ["f2tr"]  = {}, ["f2g"]  = {}, ["f2qual"]  = {}, ["f2nolink"]  = {type = "boolean"}, ["f2lang"]  = {},
+
["f8accel"]  = {}, ["f8request"]  = {}, ["f8alt"]  = {}, ["f8sc"]  = {}, ["f8id"]  = {}, ["f8tr"]  = {}, ["f8g"]  = {}, ["f8qual"]  = {}, ["f8nolink"]  = {type = "boolean"}, ["f8lang"]  = {},
−
[7]  = {allow_empty = true}, [8]  = {}, ["f3accel"]  = {}, ["f3request"]  = {}, ["f3alt"]  = {}, ["f3sc"]  = {}, ["f3id"]  = {}, ["f3tr"]  = {}, ["f3g"]  = {}, ["f3qual"]  = {}, ["f3nolink"]  = {type = "boolean"}, ["f3lang"]  = {},
+
["f9accel"]  = {}, ["f9request"]  = {}, ["f9alt"]  = {}, ["f9sc"]  = {}, ["f9id"] =  {}, ["f9tr"]  = {}, ["f9g"]  = {}, ["f9qual"]  = {}, ["f9nolink"]  = {type = "boolean"}, ["f9lang"]  = {},
−
[9]  = {allow_empty = true}, [10] = {}, ["f4accel"]  = {}, ["f4request"]  = {}, ["f4alt"]  = {}, ["f4sc"]  = {}, ["f4id"]  = {}, ["f4tr"]  = {}, ["f4g"]  = {}, ["f4qual"]  = {}, ["f4nolink"]  = {type = "boolean"}, ["f4lang"]  = {},
+
["f10accel"] = {}, ["f10request"] = {}, ["f10alt"] = {}, ["f10sc"] = {}, ["f10id"] = {}, ["f10tr"] = {}, ["f10g"] = {}, ["f10qual"] = {}, ["f10nolink"] = {type = "boolean"}, ["f10lang"] = {},
−
[11] = {allow_empty = true}, [12] = {}, ["f5accel"]  = {}, ["f5request"]  = {}, ["f5alt"]  = {}, ["f5sc"]  = {}, ["f5id"]  = {}, ["f5tr"]  = {}, ["f5g"]  = {}, ["f5qual"]  = {}, ["f5nolink"]  = {type = "boolean"}, ["f5lang"]  = {},
+
["f11accel"] = {}, ["f11request"] = {}, ["f11alt"] = {}, ["f11sc"] = {}, ["f11id"] = {}, ["f11tr"] = {}, ["f11g"] = {}, ["f11qual"] = {}, ["f11nolink"] = {type = "boolean"}, ["f11lang"] = {},
−
[13] = {allow_empty = true}, [14] = {}, ["f6accel"]  = {}, ["f6request"]  = {}, ["f6alt"]  = {}, ["f6sc"]  = {}, ["f6id"]  = {}, ["f6tr"]  = {}, ["f6g"]  = {}, ["f6qual"]  = {}, ["f6nolink"]  = {type = "boolean"}, ["f6lang"]  = {},
+
["f12accel"] = {}, ["f12request"] = {}, ["f12alt"] = {}, ["f12sc"] = {}, ["f12id"] = {}, ["f12tr"] = {}, ["f12g"] = {}, ["f12qual"] = {}, ["f12nolink"] = {type = "boolean"}, ["f12lang"] = {},
−
[15] = {allow_empty = true}, [16] = {}, ["f7accel"]  = {}, ["f7request"]  = {}, ["f7alt"]  = {}, ["f7sc"]  = {}, ["f7id"]  = {}, ["f7tr"]  = {}, ["f7g"]  = {}, ["f7qual"]  = {}, ["f7nolink"]  = {type = "boolean"}, ["f7lang"]  = {},
+
["f13accel"] = {}, ["f13request"] = {}, ["f13alt"] = {}, ["f13sc"] = {}, ["f13id"] = {}, ["f13tr"] = {}, ["f13g"] = {}, ["f13qual"] = {}, ["f13nolink"] = {type = "boolean"}, ["f13lang"] = {},
−
[17] = {allow_empty = true}, [18] = {}, ["f8accel"]  = {}, ["f8request"]  = {}, ["f8alt"]  = {}, ["f8sc"]  = {}, ["f8id"]  = {}, ["f8tr"]  = {}, ["f8g"]  = {}, ["f8qual"]  = {}, ["f8nolink"]  = {type = "boolean"}, ["f8lang"]  = {},
+
["f14accel"] = {}, ["f14request"] = {}, ["f14alt"] = {}, ["f14sc"] = {}, ["f14id"] = {}, ["f14tr"] = {}, ["f14g"] = {}, ["f14qual"] = {}, ["f14nolink"] = {type = "boolean"}, ["f14lang"] = {},
−
[19] = {allow_empty = true}, [20] = {}, ["f9accel"]  = {}, ["f9request"]  = {}, ["f9alt"]  = {}, ["f9sc"]  = {}, ["f9id"] =  {}, ["f9tr"]  = {}, ["f9g"]  = {}, ["f9qual"]  = {}, ["f9nolink"]  = {type = "boolean"}, ["f9lang"]  = {},
+
["f15accel"] = {}, ["f15request"] = {}, ["f15alt"] = {}, ["f15sc"] = {}, ["f15id"] = {}, ["f15tr"] = {}, ["f15g"] = {}, ["f15qual"] = {}, ["f15nolink"] = {type = "boolean"}, ["f15lang"] = {},
−
[21] = {allow_empty = true}, [22] = {}, ["f10accel"] = {}, ["f10request"] = {}, ["f10alt"] = {}, ["f10sc"] = {}, ["f10id"] = {}, ["f10tr"] = {}, ["f10g"] = {}, ["f10qual"] = {}, ["f10nolink"] = {type = "boolean"}, ["f10lang"] = {},
+
["f16accel"] = {}, ["f16request"] = {}, ["f16alt"] = {}, ["f16sc"] = {}, ["f16id"] = {}, ["f16tr"] = {}, ["f16g"] = {}, ["f16qual"] = {}, ["f16nolink"] = {type = "boolean"}, ["f16lang"] = {},
−
[23] = {allow_empty = true}, [24] = {}, ["f11accel"] = {}, ["f11request"] = {}, ["f11alt"] = {}, ["f11sc"] = {}, ["f11id"] = {}, ["f11tr"] = {}, ["f11g"] = {}, ["f11qual"] = {}, ["f11nolink"] = {type = "boolean"}, ["f11lang"] = {},
+
["f17accel"] = {}, ["f17request"] = {}, ["f17alt"] = {}, ["f17sc"] = {}, ["f17id"] = {}, ["f17tr"] = {}, ["f17g"] = {}, ["f17qual"] = {}, ["f17nolink"] = {type = "boolean"}, ["f17lang"] = {},
−
[25] = {allow_empty = true}, [26] = {}, ["f12accel"] = {}, ["f12request"] = {}, ["f12alt"] = {}, ["f12sc"] = {}, ["f12id"] = {}, ["f12tr"] = {}, ["f12g"] = {}, ["f12qual"] = {}, ["f12nolink"] = {type = "boolean"}, ["f12lang"] = {},
 
−
[27] = {allow_empty = true}, [28] = {}, ["f13accel"] = {}, ["f13request"] = {}, ["f13alt"] = {}, ["f13sc"] = {}, ["f13id"] = {}, ["f13tr"] = {}, ["f13g"] = {}, ["f13qual"] = {}, ["f13nolink"] = {type = "boolean"}, ["f13lang"] = {},
 
−
[29] = {allow_empty = true}, [30] = {}, ["f14accel"] = {}, ["f14request"] = {}, ["f14alt"] = {}, ["f14sc"] = {}, ["f14id"] = {}, ["f14tr"] = {}, ["f14g"] = {}, ["f14qual"] = {}, ["f14nolink"] = {type = "boolean"}, ["f14lang"] = {},
 
−
[31] = {allow_empty = true}, [32] = {}, ["f15accel"] = {}, ["f15request"] = {}, ["f15alt"] = {}, ["f15sc"] = {}, ["f15id"] = {}, ["f15tr"] = {}, ["f15g"] = {}, ["f15qual"] = {}, ["f15nolink"] = {type = "boolean"}, ["f15lang"] = {},
 
−
[33] = {allow_empty = true}, [34] = {}, ["f16accel"] = {}, ["f16request"] = {}, ["f16alt"] = {}, ["f16sc"] = {}, ["f16id"] = {}, ["f16tr"] = {}, ["f16g"] = {}, ["f16qual"] = {}, ["f16nolink"] = {type = "boolean"}, ["f16lang"] = {},
 
−
[35] = {allow_empty = true}, [36] = {}, ["f17accel"] = {}, ["f17request"] = {}, ["f17alt"] = {}, ["f17sc"] = {}, ["f17id"] = {}, ["f17tr"] = {}, ["f17g"] = {}, ["f17qual"] = {}, ["f17nolink"] = {type = "boolean"}, ["f17lang"] = {},
 
 
}
 
}
  
Riga 70: Riga 58:
 
 
 
-- Get language and script information
 
-- Get language and script information
−
local lang = args[1] or "und"
+
local lang = args[1]
 
local sc = args["sc"]
 
local sc = args["sc"]
 
local cat_sc = args["cat sc"]
 
local cat_sc = args["cat sc"]
Riga 87: Riga 75:
 
local cat2 = args["cat2"]
 
local cat2 = args["cat2"]
 
local cat3 = args["cat3"]
 
local cat3 = args["cat3"]
−
+
local heads = args["head"]
−
-- Gather headwords and transliterations
+
local translits = args["tr"]
−
local heads = {}
+
local genders = args["g"]
−
local translits = {}
 
−
local head = args["head"] or ""
 
−
local translit = args["tr"]
 
−
local i = 1
 
−
 
−
while head do
 
−
if head then
 
−
table.insert(heads, head)
 
−
translits[#heads] = translit
 
−
end
 
−
 
−
i = i + 1
 
−
head = args["head" .. i]
 
−
translit = args["tr" .. i]
 
−
end
 
−
 
−
-- Gather gender and number specifications
 
−
-- Iterate over all gn parameters (g2, g3 and so on) until one is empty
 
−
local genders = {}
 
−
local g = args["g"]
 
−
local i = 2
 
−
 
−
while g do
 
−
table.insert(genders, g)
 
−
g = args["g" .. i]
 
−
i = i + 1
 
−
end
 
 
 
 
-- Gather inflected forms
 
-- Gather inflected forms
 
local inflections = {}
 
local inflections = {}
 
 
−
local i = 1
+
-- Go over all the inflection parameters
−
local label = args[i * 2 + 1]
+
for i = 1, math.ceil(args[3].maxindex / 2) do
−
local accel = args["f" .. i .. "accel"]
+
local infl_part = {
−
local request = args["f" .. i .. "request"]
+
label   = args[3][i * 2 - 1],
−
local parts = {label = label, accel = accel, request = request}
+
accel   = args["f" .. i .. "accel"],
−
+
request = args["f" .. i .. "request"],
−
local m_scripts = nil
+
}
−
+
−
while label do
+
local form = {
−
local term = args[i * 2 + 2]
+
term       = args[3][i * 2],
−
local alt = args["f" .. i .. "alt"]
+
alt       = args["f" .. i .. "alt"],
−
local sc = args["f" .. i .. "sc"]
+
genders    = {args["f" .. i .. "g"]},
−
local id = args["f" .. i .. "id"]
+
id         = args["f" .. i .. "id"],
−
local translit = args["f" .. i .. "tr"]
+
lang      = args["f" .. i .. "lang"],
−
local gender = args["f" .. i .. "g"]
+
nolink    = args["f" .. i .. "nolink"],
−
local qualifier = args["f" .. i .. "qual"]
+
qualifiers = {args["f" .. i .. "qual"]},
−
local nolink = args["f" .. i .. "nolink"]
+
sc        = args["f" .. i .. "sc"],
−
local lang = args["f" .. i .. "lang"]
+
translit  = args["f" .. i .. "tr"],
 +
}
 
 
−
if lang ~= nil then
+
-- If no term or alt is given, then the label is shown alone.
−
lang = require("Module:languages").getByCode(lang) or error("The language code \"" .. lang .. "\" is not valid.")
+
if form.term or form.alt then
 +
table.insert(infl_part, form)
 
end
 
end
 
 
−
if term or alt then
+
if form.lang ~= nil then
−
if sc then
+
form.lang = require("Module:languages").getByCode(form.lang) or error("The language code \"" .. form.lang .. "\" is not valid.")
−
m_scripts = m_scripts or require("Module:scripts")
 
−
sc = (sc and (m_scripts.getByCode(sc) or error("The script code \"" .. sc .. "\" is not valid.")) or nil)
 
−
end
 
−
 
−
table.insert(parts, {term = term, alt = alt, sc = sc, id = id, translit = translit, genders = {gender}, qualifiers = {qualifier}, nolink = nolink, lang = lang})
 
 
end
 
end
 
 
−
i = i + 1
+
if form.sc ~= nil then
−
label = args[i * 2 + 1]
+
form.sc = require("Module:scripts").getByCode(form.sc) or error("The script code \"" .. form.sc .. "\" is not valid.")
−
accel = args["f" .. i .. "accel"]
+
end
−
request = args["f" .. i .. "request"]
 
 
 
−
-- If the next label is not "or" then insert the previous one and create a new one.
+
if infl_part.label == "or" then
−
if label ~= "or" then
+
-- Append to the previous inflection part
−
-- Only insert if the previous label is not empty.
+
table.insert(inflections[#inflections], form)
−
if (parts.label or "") ~= "" then
+
elseif infl_part.label then
−
table.insert(inflections, parts)
+
-- Add a new inflection part
−
end
+
table.insert(inflections, infl_part)
−
 
−
parts = {label = label, accel = accel, request = request}
 
 
end
 
end
 
end
 
end

Versione delle 20:40, 18 mag 2015

La documentazione per questo modulo può essere creata in Modulo:Headword/templates/man

local export = {}

-- Part of speech types that should not be pluralized.
local invariable = {
	["cmavo"] = true,
	["cmene"] = true,
	["fu'ivla"] = true,
	["gismu"] = true,
	["Han tu"] = true,
	["hanzi"] = true,
	["hanja"] = true,
	["jyutping"] = true,
	["kanji"] = true,
	["lujvo"] = true,
	["phrasebook"] = true,
	["pinyin"] = true,
	["rafsi"] = true,
	["romaji"] = true,
}

local params = {
	[1] = {required = true, default = "und"},
	["sc"] = {},
	["cat sc"] = {},
	["sort"] = {},
	
	[2] = {},
	["cat2"] = {},
	["cat3"] = {},
	
	["head"] = {list = true, allow_holes = true, default = ""},
	["tr"] = {list = true, allow_holes = true},
	["g"] = {list = true},
	
	[3] = {list = true, allow_holes = true},
	
	["f1accel"]  = {}, ["f1request"]  = {}, ["f1alt"]  = {}, ["f1sc"]  = {}, ["f1id"]  = {}, ["f1tr"]  = {}, ["f1g"]  = {}, ["f1qual"]  = {}, ["f1nolink"]  = {type = "boolean"}, ["f1lang"]  = {},
	["f2accel"]  = {}, ["f2request"]  = {}, ["f2alt"]  = {}, ["f2sc"]  = {}, ["f2id"]  = {}, ["f2tr"]  = {}, ["f2g"]  = {}, ["f2qual"]  = {}, ["f2nolink"]  = {type = "boolean"}, ["f2lang"]  = {},
	["f3accel"]  = {}, ["f3request"]  = {}, ["f3alt"]  = {}, ["f3sc"]  = {}, ["f3id"]  = {}, ["f3tr"]  = {}, ["f3g"]  = {}, ["f3qual"]  = {}, ["f3nolink"]  = {type = "boolean"}, ["f3lang"]  = {},
	["f4accel"]  = {}, ["f4request"]  = {}, ["f4alt"]  = {}, ["f4sc"]  = {}, ["f4id"]  = {}, ["f4tr"]  = {}, ["f4g"]  = {}, ["f4qual"]  = {}, ["f4nolink"]  = {type = "boolean"}, ["f4lang"]  = {},
	["f5accel"]  = {}, ["f5request"]  = {}, ["f5alt"]  = {}, ["f5sc"]  = {}, ["f5id"]  = {}, ["f5tr"]  = {}, ["f5g"]  = {}, ["f5qual"]  = {}, ["f5nolink"]  = {type = "boolean"}, ["f5lang"]  = {},
	["f6accel"]  = {}, ["f6request"]  = {}, ["f6alt"]  = {}, ["f6sc"]  = {}, ["f6id"]  = {}, ["f6tr"]  = {}, ["f6g"]  = {}, ["f6qual"]  = {}, ["f6nolink"]  = {type = "boolean"}, ["f6lang"]  = {},
	["f7accel"]  = {}, ["f7request"]  = {}, ["f7alt"]  = {}, ["f7sc"]  = {}, ["f7id"]  = {}, ["f7tr"]  = {}, ["f7g"]  = {}, ["f7qual"]  = {}, ["f7nolink"]  = {type = "boolean"}, ["f7lang"]  = {},
	["f8accel"]  = {}, ["f8request"]  = {}, ["f8alt"]  = {}, ["f8sc"]  = {}, ["f8id"]  = {}, ["f8tr"]  = {}, ["f8g"]  = {}, ["f8qual"]  = {}, ["f8nolink"]  = {type = "boolean"}, ["f8lang"]  = {},
	["f9accel"]  = {}, ["f9request"]  = {}, ["f9alt"]  = {}, ["f9sc"]  = {}, ["f9id"] =  {}, ["f9tr"]  = {}, ["f9g"]  = {}, ["f9qual"]  = {}, ["f9nolink"]  = {type = "boolean"}, ["f9lang"]  = {},
	["f10accel"] = {}, ["f10request"] = {}, ["f10alt"] = {}, ["f10sc"] = {}, ["f10id"] = {}, ["f10tr"] = {}, ["f10g"] = {}, ["f10qual"] = {}, ["f10nolink"] = {type = "boolean"}, ["f10lang"] = {},
	["f11accel"] = {}, ["f11request"] = {}, ["f11alt"] = {}, ["f11sc"] = {}, ["f11id"] = {}, ["f11tr"] = {}, ["f11g"] = {}, ["f11qual"] = {}, ["f11nolink"] = {type = "boolean"}, ["f11lang"] = {},
	["f12accel"] = {}, ["f12request"] = {}, ["f12alt"] = {}, ["f12sc"] = {}, ["f12id"] = {}, ["f12tr"] = {}, ["f12g"] = {}, ["f12qual"] = {}, ["f12nolink"] = {type = "boolean"}, ["f12lang"] = {},
	["f13accel"] = {}, ["f13request"] = {}, ["f13alt"] = {}, ["f13sc"] = {}, ["f13id"] = {}, ["f13tr"] = {}, ["f13g"] = {}, ["f13qual"] = {}, ["f13nolink"] = {type = "boolean"}, ["f13lang"] = {},
	["f14accel"] = {}, ["f14request"] = {}, ["f14alt"] = {}, ["f14sc"] = {}, ["f14id"] = {}, ["f14tr"] = {}, ["f14g"] = {}, ["f14qual"] = {}, ["f14nolink"] = {type = "boolean"}, ["f14lang"] = {},
	["f15accel"] = {}, ["f15request"] = {}, ["f15alt"] = {}, ["f15sc"] = {}, ["f15id"] = {}, ["f15tr"] = {}, ["f15g"] = {}, ["f15qual"] = {}, ["f15nolink"] = {type = "boolean"}, ["f15lang"] = {},
	["f16accel"] = {}, ["f16request"] = {}, ["f16alt"] = {}, ["f16sc"] = {}, ["f16id"] = {}, ["f16tr"] = {}, ["f16g"] = {}, ["f16qual"] = {}, ["f16nolink"] = {type = "boolean"}, ["f16lang"] = {},
	["f17accel"] = {}, ["f17request"] = {}, ["f17alt"] = {}, ["f17sc"] = {}, ["f17id"] = {}, ["f17tr"] = {}, ["f17g"] = {}, ["f17qual"] = {}, ["f17nolink"] = {type = "boolean"}, ["f17lang"] = {},
}

function export.head_t(frame)
	local args = require("Module:parameters").process(frame:getParent().args, params)
	
	-- Get language and script information
	local lang = args[1]
	local sc = args["sc"]
	local cat_sc = args["cat sc"]
	lang = require("Module:languages").getByCode(lang) or error("The language code \"" .. lang .. "\" is not valid.")
	
	if cat_sc then
		cat_sc = (cat_sc and (require("Module:scripts").getByCode(cat_sc) or error("The script code \"" .. cat_sc .. "\" is not valid.")) or nil)
		sc = cat_sc
	else
		sc = (sc and (require("Module:scripts").getByCode(sc) or error("The script code \"" .. sc .. "\" is not valid.")) or nil)
	end
	
	-- Gather basic parameters
	local sort_key = args["sort"]
	local pos = args[2]
	local cat2 = args["cat2"]
	local cat3 = args["cat3"]
	local heads = args["head"]
	local translits = args["tr"]
	local genders = args["g"]
	
	-- Gather inflected forms
	local inflections = {}
	
	-- Go over all the inflection parameters
	for i = 1, math.ceil(args[3].maxindex / 2) do
		local infl_part = {
			label    = args[3][i * 2 - 1],
			accel    = args["f" .. i .. "accel"],
			request  = args["f" .. i .. "request"],
			}
		
		local form = {
			term       =  args[3][i * 2],
			alt        =  args["f" .. i .. "alt"],
			genders    = {args["f" .. i .. "g"]},
			id         =  args["f" .. i .. "id"],
			lang       =  args["f" .. i .. "lang"],
			nolink     =  args["f" .. i .. "nolink"],
			qualifiers = {args["f" .. i .. "qual"]},
			sc         =  args["f" .. i .. "sc"],
			translit   =  args["f" .. i .. "tr"],
			}
		
		-- 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 form.lang ~= nil then
			form.lang = require("Module:languages").getByCode(form.lang) or error("The language code \"" .. form.lang .. "\" is not valid.")
		end
		
		if form.sc ~= nil then
			form.sc = require("Module:scripts").getByCode(form.sc) or error("The script code \"" .. form.sc .. "\" is not valid.")
		end
		
		if infl_part.label == "or" then
			-- Append to the previous inflection part
			table.insert(inflections[#inflections], form)
		elseif infl_part.label then
			-- Add a new inflection part
			table.insert(inflections, infl_part)
		end
	end
	
	-- Get/set categories
	local categories = {}
	local tracking_categories = {}
	
	if pos then
		if not pos:find("s$") and not invariable[pos] then
			--require("Module:debug").track("head tracking/singular category")
			
			-- Make the plural form of the part of speech
			if pos:find("x$") then
				pos = pos .. "es"
			else
				pos = pos .. "s"
			end
		end
		
		table.insert(categories, lang:getCanonicalName() .. " " .. pos .. (cat_sc and " in " .. cat_sc:getCategoryName() or ""))
	end
	
	if cat2 then
		table.insert(categories, lang:getCanonicalName() .. " " .. cat2)
	end
	
	if cat3 then
		table.insert(categories, lang:getCanonicalName() .. " " .. cat3)
	end
	
	return require("Module:headword").full_headword(lang, sc, heads, translits, genders, inflections, categories, sort_key) ..
		require("Module:utilities").format_categories(tracking_categories, lang, sort_key)
end

return export