Module:Languages/List

From Chaosvermittlung Wiki
< Module:Languages
Revision as of 15:29, 15 January 2017 by PhilmacFLy (talk | contribs) (1 revision imported)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

local p = {};

-- --[[ Check this list by running this in the console of the Lua Module editor in MediaWiki: ="p.list={'" .. table.concat(p.getSortedList(mw.language.fetchLanguageNames()), "','") .. "',}" ]] function p.getSortedList(mwLangList)

   local sortedList = {}
   for lang, _ in pairs(mwLangList) do
       table.insert(sortedList, lang)
   end
   table.sort(sortedList)
   return sortedList

end

p.list = p.getSortedList(mw.language.fetchLanguageNames())

setmetatable(p, {

   quickTests = function()
       local i = 0
       for k, v in pairs(p.list) do
           if type(k) ~= 'number' or k < 1 or k ~= math.floor(k)
           or type(v) ~= 'string' or #v < 2 or #v > 16
           or (v):find('^[a-z][%-0-9a-z]*[0-9a-z]$') ~= 1 then
               return false, ': invalid sequence of language codes in p.list["' .. tostring(k) .. '"] = "' .. tostring(v) .. '"'
           end
           i = i + 1
       end
       if #(p.list) ~= i then return false, ': invalid sequence: length = '.. #(p.list) ' for ' .. i .. 'distinct keys' end
       return true
   end

}) --[[ To test this module in the Lua console: =getmetatable(p).quickTests() -- must return true --]] return p;