local export = {}
local m_languages = require("Module:languages")
local function errorf(level, ...)
if type(level) == number then
return error(string.format(...), level + 1)
else -- level is actually the format string.
return error(string.format(level, ...), 2)
end
end
local function logf(...)
return mw.log(string.format(...))
end
function export.etyl(frame)
local params = {
[1] = {}, -- parent language code?
[2] = {list = true},
["sort"] = {},
}
local args = require("Module:parameters").process(frame:getParent().args, params)
local sort_key = args["sort"]
local lang = m_languages.getByCode(args[1]) or m_languages.err(args[1], 1)
local langCode = lang:getCode()
local lects = args[2]
for i, lect in ipairs(lects) do
local langObject = require("Module:etymology languages").getByCode(lect)
if langObject then
-- Imperfect: some etymology languages are probably farther away
-- generationally than daughters.
if langObject:getParentCode() ~= langCode then
logf("%s (%s) is not the parent of %s (%s)",
lang:getCanonicalName(), langCode,
langObject:getCanonicalName(), langObject:getCode())
end
lects[i] = langObject:makeWikipediaLink()
else
errorf("The language code %s is not recognized", lect)
end
end
if not lects[1] then
return frame.args.default
else
return require "Module:table".serialCommaJoin(lects)
end
end
return export