Documentation for this module may be created at Modul:koda zimanî/belge

b = require('Modul:bases')

-- Çavkanî: fr.wiktionary [[Module:code de langue]]
local p = {}

-- Cherche et renvoie le code à partir du nom d'une langue depuis notre liste locale [[Module:langues/data]].
-- Fonction utilisable dans un modèle
function p.koda_zimani(frame)
    -- Besoin que d'un paramètre, voire aucun si le nom de la page correspond exactement au nom dans la liste
    if frame.args ~= nil and frame.args[1] ~= nil then
        args = frame.args
    else
        args = frame:getParent().args
    end

    local nav = args[1]
    
    -- Pas de nom de langue ? Récupère le nom à partir du nom de la page
    if nav == nil or  mw.text.trim(nav) == '' then
        nav = mw.title.getCurrentTitle().text
    else
        -- On enlève les espaces du paramètre donné
        nav = mw.text.trim(nav)
    end
    
    -- Récupère la table des langues entière (en cache)
    local langues = mw.loadData('Modul:ziman/dane')
    
    --if nom then return nom end
    
    -- A-t-on la langue correspondant au code donné?
    -- On tourne sur toutes les langues pour trouver la bonne
    -- Pas aussi efficace que d'avoir le tableau inversé (code-langue -> langue-code)
    -- mais on n'en a besoin que d'une fois dans la page, donc pas la peine
    for code, langue_table in pairs(langues) do
        if nav == langue_table['nav'] then
            -- Trouvé !
            return code
        end
    end
    
    -- Pas trouvé : renvoie une chaîne vide, plus facilement utilisable par les modèles
    return ''
end

return p