local params = {
[1] = {required = true, default = "und"},
["sc"] = {},
["cat sc"] = {},
["cat3"] = {},
["head"] = {}list = true, allow_holes = true, [default = "head2"] = {}, ["head3tr"] = {}list = true, ["head4"] allow_holes = {true}, ["head5g"] = {list = true},
["tr"3] = {}, ["tr2"] list = {}true, ["tr3"] allow_holes = {}, ["tr4"] = {}, ["tr5"] = {true},
["g"] = {}, ["g2"] = {}, ["g3"] = {}, ["g4"] = {}, ["g5"] = {}, [3] = {allow_empty = true}, [4] = {}, ["f1accel"] = {}, ["f1request"] = {}, ["f1alt"] = {}, ["f1sc"] = {}, ["f1id"] = {}, ["f1tr"] = {}, ["f1g"] = {}, ["f1qual"] = {}, ["f1nolink"] = {type = "boolean"}, ["f1lang"] = {}, [5] = {allow_empty = true}, [6] = {}, ["f2accel"] = {}, ["f2request"] = {}, ["f2alt"] = {}, ["f2sc"] = {}, ["f2id"] = {}, ["f2tr"] = {}, ["f2g"] = {}, ["f2qual"] = {}, ["f2nolink"] = {type = "boolean"}, ["f2lang"] = {}, [7] = {allow_empty = true}, [8] = {}, ["f3accel"] = {}, ["f3request"] = {}, ["f3alt"] = {}, ["f3sc"] = {}, ["f3id"] = {}, ["f3tr"] = {}, ["f3g"] = {}, ["f3qual"] = {}, ["f3nolink"] = {type = "boolean"}, ["f3lang"] = {}, [9] = {allow_empty = true}, [10] = {}, ["f4accel"] = {}, ["f4request"] = {}, ["f4alt"] = {}, ["f4sc"] = {}, ["f4id"] = {}, ["f4tr"] = {}, ["f4g"] = {}, ["f4qual"] = {}, ["f4nolink"] = {type = "boolean"}, ["f4lang"] = {}, [11] = {allow_empty = true}, [12] = {}, ["f5accel"] = {}, ["f5request"] = {}, ["f5alt"] = {}, ["f5sc"] = {}, ["f5id"] = {}, ["f5tr"] = {}, ["f5g"] = {}, ["f5qual"] = {}, ["f5nolink"] = {type = "boolean"}, ["f5lang"] = {}, [13] = {allow_empty = true}, [14] = {}, ["f6accel"] = {}, ["f6request"] = {}, ["f6alt"] = {}, ["f6sc"] = {}, ["f6id"] = {}, ["f6tr"] = {}, ["f6g"] = {}, ["f6qual"] = {}, ["f6nolink"] = {type = "boolean"}, ["f6lang"] = {}, [15] = {allow_empty = true}, [16] = {}, ["f7accel"] = {}, ["f7request"] = {}, ["f7alt"] = {}, ["f7sc"] = {}, ["f7id"] = {}, ["f7tr"] = {}, ["f7g"] = {}, ["f7qual"] = {}, ["f7nolink"] = {type = "boolean"}, ["f7lang"] = {}, [17] = {allow_empty = true}, [18] = {}, ["f8accel"] = {}, ["f8request"] = {}, ["f8alt"] = {}, ["f8sc"] = {}, ["f8id"] = {}, ["f8tr"] = {}, ["f8g"] = {}, ["f8qual"] = {}, ["f8nolink"] = {type = "boolean"}, ["f8lang"] = {}, [19] = {allow_empty = true}, [20] = {}, ["f9accel"] = {}, ["f9request"] = {}, ["f9alt"] = {}, ["f9sc"] = {}, ["f9id"] = {}, ["f9tr"] = {}, ["f9g"] = {}, ["f9qual"] = {}, ["f9nolink"] = {type = "boolean"}, ["f9lang"] = {}, [21] = {allow_empty = true}, [22] = {}, ["f10accel"] = {}, ["f10request"] = {}, ["f10alt"] = {}, ["f10sc"] = {}, ["f10id"] = {}, ["f10tr"] = {}, ["f10g"] = {}, ["f10qual"] = {}, ["f10nolink"] = {type = "boolean"}, ["f10lang"] = {}, [23] = {allow_empty = true}, [24] = {}, ["f11accel"] = {}, ["f11request"] = {}, ["f11alt"] = {}, ["f11sc"] = {}, ["f11id"] = {}, ["f11tr"] = {}, ["f11g"] = {}, ["f11qual"] = {}, ["f11nolink"] = {type = "boolean"}, ["f11lang"] = {}, [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"] = {},
}
-- Get language and script information
local lang = args[1] or "und"
local sc = args["sc"]
local cat_sc = args["cat sc"]
local cat2 = args["cat2"]
local cat3 = args["cat3"]
-- Gather headwords and transliterations local heads = {} 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
local inflections = {}
local -- 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], local accel = args["f" .. i .. "accel"], local request = args["f" .. i .. "request"], local parts = {label = label, accel = accel, request = request } local m_scripts form = nil{ while label do local term = args[3][i * 2 + 2], local alt = args["f" .. i .. "alt"], local sc genders = {args["f" .. i .. "scg"]}, local id = args["f" .. i .. "id"], local translit lang = args["f" .. i .. "trlang"], local gender nolink = args["f" .. i .. "gnolink"], local qualifier qualifiers = {args["f" .. i .. "qual"]}, local nolink sc = args["f" .. i .. "nolinksc"], local lang translit = args["f" .. i .. "langtr"], }
-- If no term or alt is given, then the label is shown alone. if lang ~= nil form.term or form.alt then lang = require("Module:languages")table.getByCodeinsert(lang) or error("The language code \"" .. lang .. "\" is not valid."infl_part, form)
end
if term or alt form.lang ~= nil then if sc then m_scripts form.lang = m_scripts or require("Module:scriptslanguages") sc = (sc and (m_scripts.getByCode(scform.lang) or error("The script language code \"" .. sc form.lang .. "\" 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
i if form.sc ~= i + 1nil then label form.sc = args[i * 2 + 1] accel = args[require("fModule:scripts" ).getByCode(form. i .. sc) or error("accelThe script code \"] request = args["f" .. i form.sc .. "request\" is not valid."]) end
-- If the next label is not "or" then insert the previous one and create a new oneif infl_part. if label ~== "or" then -- Only insert if Append to the previous label is not empty.inflection part if (parts.label or "") ~= "" then table.insert(inflections[#inflections], partsform) end elseif infl_part.label then -- Add a new inflection part parts = {label = labeltable.insert(inflections, accel = accel, request = request}infl_part)
end
end