Module:languages
From SUALEX
Documentation for this module may be created at Module:languages/doc
-- Module:languages
local languages_data = require("Module:languages/data")
local languages = {}
local language_cache = {}
function languages.get_canonical_name(lang_code)
local data = languages_data[lang_code]
return (data and data[1]) or lang_code
end
function languages.get_ancestor_code(lang_code)
local data = languages_data[lang_code]
return data and data[2] or nil
end
function languages.get_all_ancestors(lang_code)
if language_cache[lang_code] then return language_cache[lang_code] end
local ancestors = {}
local current = lang_code
while current do
current = languages.get_ancestor_code(current)
if current then table.insert(ancestors, current) end
end
language_cache[lang_code] = ancestors
return ancestors
end
function languages.is_descendant_of(child_code, ancestor_code)
local ancestors = languages.get_all_ancestors(child_code)
for _, a in ipairs(ancestors) do
if a == ancestor_code then return true end
end
return false
end
-- Treat codes ending in -pro OR -pre as proto
function languages.is_proto(lang_code)
if not lang_code then return false end
lang_code = tostring(lang_code)
return lang_code:sub(-4) == "-pro" or lang_code:sub(-4) == "-pre"
end
return languages