မေႃႇၵျူး:etymology/templates UNU
local export = {}
local m_languages = require("Module:languages")
local function fetch_lang(lang, parameter)
return m_languages.getByCode(lang) or m_languages.err(lang, parameter)
end
local function fetch_source(code, disallow_family)
local source =
m_languages.getByCode(code)
or require("Module:etymology languages").getByCode(code)
or not disallow_family and require("Module:families").getByCode(code)
if source then return source else error("The language" .. (not disallow_family and ", family" or "") .. " or etymology language code \"" .. code .. "\" is not valid.") end end
local function fetch_script(sc)
if sc then
return require("Module:scripts").getByCode(sc) or error("The script code \"" .. sc .. "\" is not valid.")
else
return nil
end
end
function export.etyl(frame)
local params = {
[1] = {required = true, default = "und"},
[2] = {},
["sort"] = {},
}
local args = require("Module:parameters").process(frame:getParent().args, params)
local source = fetch_source(args[1]) local lang = args[2] local sort_key = args["sort"]
-- Empty language means English, but "-" means no language. Yes, confusing... if not lang then lang = "en" elseif lang == "-" then lang = nil end if lang then lang = fetch_lang(lang, 2) end if lang and (lang:getCode() == "la" or lang:getCode() == "nl") then require("Module:debug").track("etyl/" .. lang:getCode()) require("Module:debug").track("etyl/" .. lang:getCode() .. "/" .. source:getCode()) end
return require("Module:etymology").format_etyl(lang, source, sort_key) end
function export.cognate(frame)
local args = frame:getParent().args
if args.gloss then require("Module:debug").track("cognate/gloss param") end
local params = { [1] = {required = true, default = "und"}, [2] = {}, [3] = {alias_of = "alt"}, [4] = {alias_of = "t"},
["alt"] = {}, ["g"] = {}, ["id"] = {}, ["lit"] = {}, ["pos"] = {}, ["t"] = {}, ["gloss"] = {alias_of = "t"}, ["tr"] = {}, ["ts"] = {}, ["sc"] = {},
["sort"] = {}, }
args = require("Module:parameters").process(args, params)
local source = fetch_source(args[1]) local sc = fetch_script(args["sc"])
return require("Module:etymology").format_cognate( { lang = source, sc = sc, term = args[2], alt = args["alt"], id = args["id"], genders = { args["g"] }, tr = args["tr"], ts = args["ts"], gloss = args["t"], pos = args["pos"], lit = args["lit"] }, args["sort"]) end
function export.noncognate(frame)
return export.cognate(frame)
end
function export.derived(frame)
local params = {
[1] = {required = true, default = "und"},
[2] = {required = true, default = "und"},
[3] = {},
[4] = {alias_of = "alt"},
[5] = {alias_of = "t"},
["alt"] = {}, ["g"] = {}, ["gloss"] = {alias_of = "t"}, ["id"] = {}, ["lit"] = {}, ["pos"] = {}, ["t"] = {}, ["tr"] = {}, ["ts"] = {}, ["sc"] = {},
["sort"] = {}, }
local args = require("Module:parameters").process(frame:getParent().args, params)
local lang = fetch_lang(args[1], 1) local source = fetch_source(args[2]) local sc = fetch_script(args["sc"])
return require("Module:etymology").format_derived( lang, { lang = source, sc = sc, term = args[3], alt = args["alt"], id = args["id"], genders = { args["g"] }, tr = args["tr"], ts = args["ts"], gloss = args["t"], pos = args["pos"], lit = args["lit"] }, args["sort"]) end
function export.inherited(frame)
local params = {
[1] = {required = true, default = "und"},
[2] = {required = true, default = "und"},
[3] = {},
[4] = {alias_of = "alt"},
[5] = {alias_of = "t"},
["alt"] = {}, ["g"] = {}, ["gloss"] = {alias_of = "t"}, ["id"] = {}, ["lit"] = {}, ["pos"] = {}, ["t"] = {}, ["tr"] = {}, ["ts"] = {}, ["sc"] = {},
["sort"] = {}, }
local args = require("Module:parameters").process(frame:getParent().args, params)
local lang = fetch_lang(args[1], 1) local source = fetch_source(args[2], "no family") local sc = fetch_script(args["sc"])
return require("Module:etymology").format_inherited( lang, { lang = source, sc = sc, term = args[3], alt = args["alt"], id = args["id"], genders = {args["g"]}, tr = args["tr"], ts = args["ts"], gloss = args["t"], pos = args["pos"], lit = args["lit"] }, args["sort"]) end
function export.borrowed(frame)
local params = {
[1] = {required = true, default = "und"},
[2] = {required = true, default = "und"},
[3] = {},
[4] = {alias_of = "alt"},
[5] = {alias_of = "t"},
["alt"] = {}, ["g"] = {}, ["gloss"] = {alias_of = "t"}, ["id"] = {}, ["lit"] = {}, ["pos"] = {}, ["t"] = {}, ["tr"] = {}, ["ts"] = {}, ["sc"] = {},
["sort"] = {}, ["withtext"] = {type = "boolean"}, }
local args = require("Module:parameters").process(frame:getParent().args, params)
local lang = fetch_lang(args[1], 1) local source = fetch_source(args[2]) local sc = fetch_script(args["sc"])
return require("Module:etymology").format_borrowed( lang, { lang = source, sc = sc, term = args[3], alt = args["alt"], id = args["id"], genders = {args["g"]}, tr = args["tr"], ts = args["ts"], gloss = args["t"], pos = args["pos"], lit = args["lit"], }, args["sort"], not args["withtext"], false) end
function export.learned_borrowed(frame)
local args = frame:getParent().args
if args.gloss then require("Module:debug").track("learned_borrowed/gloss param") end
local params = { [1] = {required = true, default = "und"}, [2] = {required = true, default = "und"}, [3] = {}, [4] = {alias_of = "alt"}, [5] = {alias_of = "t"},
["alt"] = {}, ["g"] = {}, ["gloss"] = {alias_of = "t"}, ["id"] = {}, ["lit"] = {}, ["pos"] = {}, ["t"] = {}, ["tr"] = {}, ["ts"] = {}, ["sc"] = {},
["notext"] = {type = "boolean"}, ["sort"] = {}, }
args = require("Module:parameters").process(args, params)
local lang = fetch_lang(args[1], 1) local source = fetch_source(args[2]) local sc = fetch_script(args["sc"])
return require("Module:etymology").format_borrowed( lang, { lang = source, sc = sc, term = args[3], alt = args["alt"], id = args["id"], genders = {args["g"]}, tr = args["tr"], ts = args["ts"], gloss = args["t"], pos = args["pos"], lit = args["lit"], }, args["sort"], args["notext"], true) end
function export.calque(frame)
local args = frame:getParent().args
local params = { [1] = {required = true, default = "und"}, [2] = {required = true, default = "und"}, [3] = {}, [4] = {alias_of = "alt"}, [5] = {alias_of = "t"},
["alt"] = {}, ["g"] = {}, ["id"] = {}, ["lit"] = {}, ["pos"] = {}, ["t"] = {}, ["tr"] = {}, ["ts"] = {},
["sort"] = {}, ["nocap"] = {type = "boolean"}, ["notext"] = {type = "boolean"}, }
-- More informative error message. if args["etyl lang"] or args["etyl term"] or args["etyl t"] or args["etyl tr"] then error("{{calque}} no longer supports parameters beginning with etyl. " .. "The parameters supported are similar to those used by " .. "{{der}}, {{inh}}, " .. "{{bor}}. See ထႅမ်းပလဵၵ်ႉ:calque/documentation for more.") end
args = require("Module:parameters").process(args, params)
local lang = fetch_lang(args[1], 1) local source = fetch_source(args[2])
return require("Module:etymology").calque( lang, { lang = source, term = args[3], alt = args["alt"], tr = args["tr"], ts = args["ts"], gloss = args["t"], lit = args["lit"], }, args["sort"], args["nocap"], args["notext"]) end
function export.semantic_loan(frame)
local params = { [1] = {required = true, default = "und"}, [2] = {required = true, default = "und"}, [3] = {}, [4] = {alias_of = "alt"}, [5] = {alias_of = "t"},
["alt"] = {}, ["g"] = {}, ["id"] = {}, ["lit"] = {}, ["pos"] = {}, ["t"] = {}, ["tr"] = {}, ["ts"] = {}, ["sc"] = {},
["nocap"] = {type = "boolean"}, ["notext"] = {type = "boolean"}, ["sort"] = {}, ["ger"] = {type = "boolean"}, }
local args = require("Module:parameters").process(frame:getParent().args, params)
local lang = fetch_lang(args[1], 1) local source = fetch_source(args[2]) local sc = fetch_script(args["sc"])
return require("Module:etymology").format_semantic_loan( lang, { lang = source, sc = sc, term = args[3], alt = args["alt"], id = args["id"], genders = {args["g"]}, tr = args["tr"], ts = args["ts"], gloss = args["t"], pos = args["pos"], lit = args["lit"], }, args["sort"], args["nocap"], args["notext"]) end
function export.psm(frame)
local params = { [1] = {required = true, default = "und"}, [2] = {required = true, default = "und"}, [3] = {}, [4] = {alias_of = "alt"}, [5] = {alias_of = "t"},
["alt"] = {}, ["g"] = {}, ["id"] = {}, ["lit"] = {}, ["pos"] = {}, ["t"] = {}, ["tr"] = {}, ["ts"] = {}, ["sc"] = {},
["nocap"] = {type = "boolean"}, ["notext"] = {type = "boolean"}, ["sort"] = {}, }
local args = require("Module:parameters").process(frame:getParent().args, params)
local lang = fetch_lang(args[1], 1) local source = fetch_source(args[2]) local sc = fetch_script(args["sc"])
return require("Module:etymology").psm( lang, { lang = source, sc = sc, term = args[3], alt = args["alt"], id = args["id"], genders = {args["g"]}, tr = args["tr"], ts = args["ts"], gloss = args["t"], pos = args["pos"], lit = args["lit"], }, args["sort"], args["nocap"], args["notext"]) end
local function qualifier(content) if content then return table.concat{ '(', '', content, '', ')' } end end
function export.descendant(frame)
local namespace = mw.title.getCurrentTitle().nsText
local params = { [1] = { required = true }, [2] = {}, [3] = {}, [4] = { alias_of = "gloss" }, ["g"] = { list = true }, ["gloss"] = {}, ["id"] = {}, ["lit"] = {}, ["pos"] = {}, ["t"] = { alias_of = "gloss" }, ["tr"] = {}, ["ts"] = {}, ["sc"] = {}, ["bor"] = { type = "boolean" }, ["der"] = { type = "boolean" }, ["clq"] = { type = "boolean" }, ["cal"] = { alias_of = "clq" }, ["calq"] = { alias_of = "clq" }, ["calque"] = { alias_of = "clq" }, ["sl"] = { type = "boolean" }, ["semantic loan"] = { alias_of = "sl" }, ["alts"] = { type = "boolean" }, }
local args = require("Module:parameters").process(frame:getParent().args, params)
local lang = args[1] local term = args[2] local alt = args[3] local tr = args["tr"] local sc = args["sc"]
if namespace == "Template" then if not ( sc or lang ) then sc = "Latn" end if not lang then lang = "en" end if not term then term = "word" end end
lang = m_languages.getByCode(lang) or require("Module:etymology languages").getByCode(lang) or m_languages.err(lang, 1)
local entryLang = require("Module:etymology").getNonEtymological(lang)
if lang:getCode() ~= entryLang:getCode() then -- ၶိုၵ်ႉတွၼ်း:WhatLinksHere/Template:tracking/descendant/etymological require("Module:debug").track("descendant/etymological") require("Module:debug").track("descendant/etymological/" .. lang:getCode()) end
if sc then sc = require("Module:scripts").getByCode(sc) or error("The script code \"" .. sc .. "\" is not valid.") end
local languageName = lang:getCanonicalName() languageName = mw.ustring.gsub(languageName, "^Proto%-", "")
local link = ""
if term ~= "-" then link = require("Module:links").full_link( { lang = entryLang, sc = sc, term = term, alt = alt, id = args["id"], tr = tr, ts = args["ts"], genders = args["g"], gloss = args["gloss"], pos = args["pos"], lit = args["lit"], }, nil, true ) end
local function add_tooltip(text, tooltip) return '' .. text .. '' end
local arrow, alts, calque, semantic_loan
if args["bor"] then arrow = add_tooltip("→ ", "borrowed") elseif args["clq"] then arrow = add_tooltip("→ ", "calque") elseif args["sl"] then arrow = add_tooltip("→ ", "semantic loan") elseif args["der"] then arrow = add_tooltip("⇒ ", "derived by addition of morphemes") else arrow = "" end
if args["alts"] then -- ၶိုၵ်ႉတွၼ်း:WhatLinksHere/Template:tracking/desc/alts require("Module:debug").track("desc/alts") alts = require("Module:descendants tree").getAlternativeForms(entryLang, term) else alts = "" end
if args["clq"] then calque = " " .. qualifier("calque") else calque = "" end
if args["sl"] then semantic_loan = " " .. qualifier("semantic loan") else semantic_loan = "" end
return table.concat{arrow, languageName, ": ", link, alts, calque, semantic_loan} end
return export