Actions

Module

Module:descendant tree

From SUALEX

Revision as of 07:30, 29 January 2026 by Jawad (talk | contribs) (Created page with "-- Module:descendant_tree local p = {} local lexicon = require("Module:lexicon") local utilities = require("Module:utilities") local etymology = require("Module:etymology") local format = require("Module:format") function p.invoke(frame) local args = frame.args or {} local param = args[1] or "" local noinh = args.noinh == "1" local noder = args.noder == "1" local nobor = args.nobor == "1" local nounc = args.nounc == "1" local parts = utilities.split_st...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Documentation for this module may be created at Module:descendant tree/doc

-- Module:descendant_tree

local p = {}
local lexicon = require("Module:lexicon")
local utilities = require("Module:utilities")
local etymology = require("Module:etymology")
local format = require("Module:format")

function p.invoke(frame)
    local args = frame.args or {}
    local param = args[1] or ""
	local noinh = args.noinh == "1"
	local noder = args.noder == "1"
	local nobor = args.nobor == "1"
	local nounc = args.nounc == "1"

    local parts = utilities.split_string(param, ":")
    local lang_code = utilities.trim_string(parts[1] or "")
    local item = utilities.trim_string(parts[2] or "")
    local homonym = item:match("#(.+)$")
    item = item:gsub("#.+$", "")

    local options = { noinh = noinh, noder = noder, nobor = nobor, nounc = nounc }

    lexicon.preload_all_lexicons()
    local root_line = ": " .. format.language_name(lang_code) .. " " .. format.render_term(lang_code, item, homonym, nil, nil, nil, "en")
    local lines = { root_line }

    local tree = etymology.build_descendant_tree(lang_code, item, homonym, options, 1)
    for _, node in ipairs(tree) do
        table.insert(lines, node.indent .. " " .. etymology.render_node(node, "descendant"))
    end
    return utilities.join_strings(lines, "\n")
end

return p