Module:descendants: Difference between revisions

Jump to navigation Jump to search
ਕੋਈ ਸੋਧ ਸਾਰ ਨਹੀਂ
No edit summary
No edit summary
Line 69: Line 69:
ancestors[lang] = {}
ancestors[lang] = {}
-- process ad hoc ancestors
if mw.ustring.find(lang, "[%>%_]") then
local ancestor_path = ""
for piece, delim in mw.ustring.gmatch(lang, "([^%>%_]+)([%>%_])") do
ancestor_path = ancestor_path .. piece
table.insert(ancestors[lang], ancestor_path)
ancestor_path = ancestor_path .. delim
end
if #ancestor_path < 1 then
-- process ad hoc ancestors
local function de_arrow(code)
local ancestor_path = ""
return mw.ustring.gsub(code, "^%>", "")
for piece, delim in mw.ustring.gmatch(lang, "([^%>%_]+)([%>%_])") do
ancestor_path = ancestor_path .. piece
table.insert(ancestors[lang], ancestor_path)
ancestor_path = ancestor_path .. delim
end
end
else -- if ad hoc ancestors unspecified, i.e. the code does not contained the path symbols > or _
if mw.ustring.find(lang, "[0-9]+$") then
if mw.ustring.find(lang, "[0-9]+$") then
Line 87: Line 86:
if mw.ustring.find(test, "[^0-9]" .. index .. "$") then -- matches existing historical doublets with identical, e.g. rad-o2, if rad2 is present
if mw.ustring.find(test, "[^0-9]" .. index .. "$") then -- matches existing historical doublets with identical, e.g. rad-o2, if rad2 is present
local test_temp = mw.ustring.gsub(test, index .. "$", "") -- get base
local test_temp = mw.ustring.gsub(test, index .. "$", "") -- get base
if m_languages.get_by_code(de_arrow(lang_temp)).lineage[test_temp] then
if m_languages.get_by_code(lang_temp).lineage[test_temp] then
table.insert(ancestors[lang], test)
table.insert(ancestors[lang], test)
end
end
elseif m_languages.get_by_code(de_arrow(lang_temp)).lineage[test] and not m_table.contains(list, test .. index) then -- if test is still an ancestor to current language, e.g. rad-o, if rad2 is present, and checks if rad-o2 is not present
elseif m_languages.get_by_code(lang_temp).lineage[test] and not m_table.contains(list, test .. index) then -- if test is still an ancestor to current language, e.g. rad-o, if rad2 is present, and checks if rad-o2 is not present
mismatch_check(lang_temp, test)
mismatch_check(lang_temp, test)
table.insert(ancestors[lang], test)
table.insert(ancestors[lang], test)
Line 97: Line 96:
else
else
for _, test in ipairs(list) do
for _, test in ipairs(list) do
if m_languages.get_by_code(de_arrow(lang)).lineage[test] then
if m_languages.get_by_code(lang).lineage[test] then
mismatch_check(lang, test)
mismatch_check(lang, test)
table.insert(ancestors[lang], test)
table.insert(ancestors[lang], test)

Navigation menu