Utilisateur:Chinedine/bac à sable/Module:el-décl-adj

Définition, traduction, prononciation, anagramme et synonyme sur le dictionnaire libre Wiktionnaire.

-- Exemple d'utilisation

--

{{#invoke:el-décl-adj|kalos|γνωστ}}

--

local p = {}

local entete = [==[
|-
!scope="col" rowspan="2"| [[cas]]
!scope="row" colspan="6"| [[NOMBRE]]
|-
!scope="col" class="sous-titre"| [[masculin]]
!scope="col" class="sous-titre"| [[féminin]]
!scope="col" class="sous-titre"| [[neutre]] ]==]

function lien_couleur(r, desinence)
    local des_couleur = '<font style="color:DeepPink">' .. desinence .. '</span>'
    return "[[" .. r .. desinence .. "|" .. r .. des_couleur .. "]]"
end

function tableau(r, desinences)
    local genres = {"m", "f", "n"}
    local cas = {"nominatif", "génitif", "accusatif", "vocatif"}
    local lignes = {}
    table.insert(lignes, '{| class="flextable"')
    local e = string.gsub(entete, "NOMBRE", "singulier")
    table.insert(lignes, e)
    for i, c in ipairs(cas) do
        -- en-tête à gauche
        table.insert(lignes, '|-')
        table.insert(lignes, '!scope="row" class="sous-titre"| [[' .. c .. ']]')
        -- les 3 formes
        for _, genre in ipairs(genres) do
           table.insert(lignes, '|class="colle-gauche"| ' .. lien_couleur(r, desinences[genre].sg[i]))
        end
    end
    local e = string.gsub(entete, "NOMBRE", "singulier")
    table.insert(lignes, e)
    for i, c in ipairs(cas) do
        -- en-tête à gauche
        table.insert(lignes, '|-')
        table.insert(lignes, '!scope="row" class="sous-titre"| [[' .. c .. ']]')
        -- les 3 formes
        for _, genre in ipairs(genres) do
           table.insert(lignes, '|class="colle-gauche"| ' .. lien_couleur(r, desinences[genre].pl[i]))
        end
    end
    return table.concat(lignes, "\n") .. "\n|}"
end

function p.kalos(frame)
    local r = frame.args[1]
    local desinences = {
        m = {sg = {"ός", "ού", "ό", "έ"},
             pl = {"οί", "ών", "ούς", "οί"}},
        f = {sg = {"ή", "ής", "ή", "ή"},
             pl = {"ές", "ών", "ές", "ές"}},
        n = {sg = {"ό", "ού", "ό", "ό"},
             pl = {"ά", "ών", "ά", "ά"}},
    }
    return tableau(r, desinences)
end

return p

--