Module:pollasena-roots: Difference between revisions

No edit summary
No edit summary
Line 14: Line 14:


local export = {}
local export = {}
local function lang_from_code(...)
return m_lang.getByCode(...)
end


local function ncategories(categories)
local function ncategories(categories)
Line 109: Line 113:
return table.concat(links) .. ncategories(categories)
return table.concat(links) .. ncategories(categories)
end
local function get_single_args(args, index)
local single = {}
for k, v in pairs(args) do
if type(v) == "table" and v.maxindex then
single[k] = v[index]
else
single[k] = v
end
end
return single
end
end


Line 133: Line 125:
for _, ancestor in ipairs(ancestor_codes) do
for _, ancestor in ipairs(ancestor_codes) do
local lang_options = ancestor.options or {}
local lang_options = ancestor.options or {}
params[termarg_index] = {
required = not lang_options.optional,
default = lang_options.default,
}
if lang_options.roots then
if lang_options.roots then
params[termarg_index] = {
params[termarg_index].list = true
required = not lang_options.optional,
params[termarg_index].allow_holes = true
list = true,
allow_holes = true,
default = lang_options.default,
}
else
params[termarg_index] = {
required = not lang_options.optional,
default = lang_options.default,
}
end
end
Line 155: Line 143:
local args = m_param.process(parent_args, params)
local args = m_param.process(parent_args, params)


local dest_lang = m_lang.getByCode(dest_code)
local dest_lang = lang_from_code(dest_code)
local etymologies = {}
local etymologies = {}
Line 162: Line 150:
local code = ancestor.code
local code = ancestor.code
local lang_options = ancestor.options or {}
local lang_options = ancestor.options or {}
local ancestor_lang = m_lang.getByCode(code)
local ancestor_lang = lang_from_code(code)
local terms
local terms


Line 174: Line 162:
terms = items
terms = items
else
else
local single_args = get_single_args(args, termarg_index)
local parsed = m_param_utils.parse_term_with_inline_modifiers_and_separate_params({
local parsed = m_param_utils.parse_term_with_inline_modifiers_and_separate_params({
processed_args = single_args,
processed_args = args,
param_mods = param_mods,
param_mods = param_mods,
termarg = termarg_index,
termarg = termarg_index,