Module:cognates: Difference between revisions
Jump to navigation
Jump to search
TheNightAvl (talk | contribs) No edit summary |
TheNightAvl (talk | contribs) No edit summary |
||
Line 13: | Line 13: | ||
} | } | ||
local langs = {} | |||
for lang, entry in pairs(args) do | for lang, entry in pairs(args) do | ||
if type(lang) == "string" then | if type(lang) == "string" then | ||
if m_languages.find_by_code(lang) and lang ~= nat then | if m_languages.find_by_code(lang) and lang ~= nat then | ||
local term, data = m_inline.parse(entry) | table.insert(langs, lang) | ||
data[1], data[2] = lang, term | --local term, data = m_inline.parse(entry) | ||
local link = frame:expandTemplate{title = "m+", args = data} | --data[1], data[2] = lang, term | ||
if nat then link = link .. "[[Category:" .. nat.name .. " terms with " .. lang.name .. " cognates]]" end | --local link = frame:expandTemplate{title = "m+", args = data} | ||
table.insert(links, link) | --if nat then link = link .. "[[Category:" .. nat.name .. " terms with " .. lang.name .. " cognates]]" end | ||
--table.insert(links, link) | |||
elseif params[lang] ~= nil then --check for parameters | elseif params[lang] ~= nil then --check for parameters | ||
params[lang] = true | params[lang] = true | ||
Line 47: | Line 30: | ||
end | end | ||
end | end | ||
end | |||
table.sort(langs, function(a, b) | |||
a = m_languages.get_by_code(a) | |||
b = m_languages.get_by_code(b) | |||
a_test = m_languages.stage_at_split(nat, a) | |||
b_test = m_languages.stage_at_split(nat, b) | |||
if a_test == b_test then | |||
return a.name < b.name | |||
else | |||
return a_test > b_test | |||
end | |||
end | |||
) | |||
for _, lang in ipairs(langs) do | |||
end | end | ||
Revision as of 01:06, 7 August 2024
Underlies {{cognates}}
.
local export = {}
local getArgs = require('Module:Arguments').getArgs
local m_inline = require("Module:inline")
local m_languages = require("Module:languages")
function export.show(frame)
local args = getArgs(frame)
local links = {}
local nat = m_languages.find_by_code(args[1] or "") ~= nil and m_languages.get_by_code(args[1])
local params = {
nocap = false,
}
local langs = {}
for lang, entry in pairs(args) do
if type(lang) == "string" then
if m_languages.find_by_code(lang) and lang ~= nat then
table.insert(langs, lang)
--local term, data = m_inline.parse(entry)
--data[1], data[2] = lang, term
--local link = frame:expandTemplate{title = "m+", args = data}
--if nat then link = link .. "[[Category:" .. nat.name .. " terms with " .. lang.name .. " cognates]]" end
--table.insert(links, link)
elseif params[lang] ~= nil then --check for parameters
params[lang] = true
else
error("[" .. lang .. "] is not a valid language code or parameter")
end
end
end
table.sort(langs, function(a, b)
a = m_languages.get_by_code(a)
b = m_languages.get_by_code(b)
a_test = m_languages.stage_at_split(nat, a)
b_test = m_languages.stage_at_split(nat, b)
if a_test == b_test then
return a.name < b.name
else
return a_test > b_test
end
end
)
for _, lang in ipairs(langs) do
end
local text = ((params.nocap and "c") or "C") .. "ognate with "
for i, link in ipairs(links) do
if i > 1 then
if links[i + 1] then
text = text .. ", "
else
text = text .. " and "
end
end
text = text .. link
end
return text
end
return export
--[[
Debug console test string:
=p.show(mw.getCurrentFrame():newChild{title="whatever",args={["rad"]="vas", ["lfv"] = "vat"}})
]]