Модуль:Песочница/Gyfto/descendant

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
Документация
local export = {}

local listToSet = require("Модуль:table/listToSet")
-- Параметры, которые изменяют термин-потомок (также поддерживается {{l}}, {{m}}). Не включает gloss=, к которому мы
-- обращаемся специально.
local param_term_mods = {"alt", "g", "id", "lit", "pos", "sc", "t", "tr", "ts"}
local param_term_mod_set = listToSet(param_term_mods)
-- Логические параметры, указывающие, являются ли термины-потомки (или все термины) определенными видами заимствований.
local bortypes = {"inh", "bor", "lbor", "slb", "obor", "translit", "der", "clq", "pclq", "sml", "unc"}
local bortype_set = listToSet(bortypes)
-- Псевдонимы clq=.
local calque_aliases = {"cal", "calq", "calque"}
local calque_alias_set = listToSet(calque_aliases)
-- Псевдонимы pclq=.
local partial_calque_aliases = {"pcal", "pcalq", "pcalque"}
local partial_calque_alias_set = listToSet(partial_calque_aliases)
-- Разные параметры списка.
local misc_list_params = {"q", "qq", "tag"}
local misc_list_param_set = listToSet(misc_list_params)

local function desc_or_desc_tree(frame, desc_tree)
	local params
	if desc_tree then
		params = {
			[1] = {required = true, default = "gem-pro"},
			[2] = {required = true, list = true, allow_holes = true, default = "*fuhsaz"},
			["notext"] = {type = "boolean"},
			["noalts"] = {type = "boolean"},
			["noparent"] = {type = "boolean"},
		}
	else
		params = {
			[1] = {required = true},
			[2] = {list = true, allow_holes = true},
			["alts"] = {type = "boolean"}
		}
	end
	return param_term_mod_set
end

function export.descendant(frame)
	return desc_or_desc_tree(frame, false)
end

function export.descendants_tree(frame)
	return desc_or_desc_tree(frame, true)
end

return export