Module:Languages/List

From Dharmawiki
< Module:Languages
Revision as of 01:00, 15 April 2016 by en>Verdy p (Javascript snippet no longer needed (and may be also inaccurate as it returns the list from the javascripts loaded by the client, possibly outdated when read from its browser cache))
(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;