Module:el-déclinaison-nom

Bonjour, vous êtes venu ici pour chercher la signification du mot Module:el-déclinaison-nom. Dans DICTIOUS, vous trouverez non seulement toutes les significations du dictionnaire pour le mot Module:el-déclinaison-nom, mais vous apprendrez également son étymologie, ses caractéristiques et comment dire Module:el-déclinaison-nom au singulier et au pluriel. Tout ce que vous devez savoir sur le mot Module:el-déclinaison-nom est ici. La définition du mot Module:el-déclinaison-nom vous aidera à être plus précis et correct lorsque vous parlerez ou écrirez vos textes. Connaître la définition deModule:el-déclinaison-nom, ainsi que celles d'autres mots, enrichit votre vocabulaire et vous fournit des ressources linguistiques plus nombreuses et de meilleure qualité.

 Documentation

Ce module construit des tables de déclinaisons de noms en grec moderne.

Chaque modèle de déclinaison correspond à une fonction du module qui construit la table, sans argument, à partir du mot vedette de l'article qui l'appelle.

Les fonctions disponibles sont les suivantes:

  • pour les noms masculins: ouranos, dromos, angelos, antilalos, nikitis, navtis, fylakas, agonas, balomatis, sfoungaras, kafes, manavis;
  • pour les noms féminins: kardia, ora, thalassa, elpida, salpigga, psychi, niki, dynami, skepsi, giagia, alepou;
  • pour les noms neutres: bouno, pevko, prosopo, provato, paidi, tragoudi, kyma, onoma, desimo, meros, edafos, kreas

Ce module n'est pas destiné à être utilisé directement mais à être appelé par les modèles appropriés figurant dans Catégorie:Modèles de déclinaison de noms communs (grec moderne).


-- Module el-déclinaison-nom librement inspiré de ]
--
-- à ajouter: options selon les cas usité (singulier seulement, pluriel seulement,
-- vocatif inusité, génitif pluriel peu/pas usité).

local p = {}

-- tables de déclinaison
local data = mw.loadData('Module:el-déclinaison-nom/data')

function lang_el(mot)
	return  '<span lang="el" class="lang-el">' .. mot .. '</span>'
end

function lien_el(mot)
	if mot == mw.title.getCurrentTitle().prefixedText then
		return ']'
	else
		return ']'
	end
end

-- Fonction auxiliaire pour faire les lignes du tableau.
function ligne_tableau(cas, as, ms, ap, mp, ms2, mp2)
    local ligne = "|-"
    ligne = ligne .. "\r\n! " .. cas
    ligne = ligne .. '\r\n| class="colle-droite" | '
    if as ~= nil then
        ligne = ligne .. lang_el(as .. '&nbsp;')
    end
    
    ligne = ligne .. '\r\n| class="colle-gauche" | ' .. lien_el(ms)
    if ms2 ~= nil then
        ligne = ligne .. '<br />' .. lien_el(ms2)
    end
    ligne = ligne .. '\r\n| class="colle-droite" | '
    if ap ~= nil then
        ligne = ligne .. lang_el(ap .. '&nbsp;')
    end
    ligne = ligne .. '\r\n| class="colle-gauche" | ' .. lien_el(mp)
    if mp2 ~= nil then
        ligne = ligne .. '<br />' .. lien_el(mp2)
    end
    return ligne .. "\r\n"
end

-- Fonction de formatage principale. Les arguments sont des tables comportant
-- des champs ns/as/gs/vs et np/ap/gp/vp pour les différents cas.
function fait_tableau(art, mots, mots2)
    local tableau = [==[
{| class="wikitable flextable"
! Cas
! colspan="2" | Singulier
! colspan="2" | Pluriel
]==]
    tableau = tableau .. ligne_tableau("Nominatif", art.ns, mots.ns, art.np, mots.np, mots2.ns, mots2.np)
    tableau = tableau .. ligne_tableau("Génitif",   art.gs, mots.gs, art.gp, mots.gp, mots2.gs, mots2.gp)
    tableau = tableau .. ligne_tableau("Accusatif", art.as, mots.as, art.ap, mots.ap, mots2.as, mots2.ap)
    tableau = tableau .. ligne_tableau("Vocatif",      nil, mots.vs,    nil, mots.vp, mots2.vs, mots2.vp)
    return tableau .. "|}"
end

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

-- Principe: les déclinaisons régulières ont besoin de connaître:
-- * le radical avec son accent premier (désinences courtes)
-- * le radical avec l'accent sur la dernière syllabe (désinence longue)
-- * le radical sans accent (désinence très longue)
-- Ces trois radicaux sont extraits par la fonction radicaux().

local accentue = {
   ='ά',
   ='έ',
   ='ή',
   ='ί',
   ='ΐ',
   ='ό',
   ='ύ',
   ='ΰ',
   ='ώ',
}

local sans_accents = {
   ='α',
   ='ε',
   ='η',
   ='ι',
   ='ϊ',
   ='ο',
   ='υ',
   ='ϋ',
   ='ω',
}

-- tronque retourne le mot sans sa desinence. En cas d'argument
-- invalide (si le mot ne termine pas par desinence), renvoie "ERREUR"
function tronque(mot, desinence)
    local l = mw.ustring.len(desinence)
    if l == 0 then
    	return mot
    end
    if mw.ustring.len(mot) < l then
        return "ERREUR"
    end
    if mw.ustring.sub(mot, -l, -1) ~= desinence then
        return "ERREUR"
    end
    return mw.ustring.sub(mot, 1, -l-1)
end

-- radicaux déplace l'accent de l'argument premier et renvoie
-- les trois variantes d'accentuation du radical.
-- Le déplacement peut faire apparaître un tréma:
-- άι -> αϊ (χάιδεμα: caresse)
-- έι -> εϊ (?)
-- όι -> οϊ (κορόιδεμα: moquerie)
-- ύι -> υϊ (?)
-- άυ -> αϋ (πράυνση)
-- έυ -> εϋ (?)
-- όυ -> οϋ (?)
function radicaux(premier)
    local r2 = ""
    local r3 = ""
    local pos_accent = -1 -- position de l'accent
    local voyelle = 0 -- indice de la dernière voyelle
    local i = 0
    -- on fait r3 en enlevant tous les accents
    for c in mw.ustring.gcodepoint(premier) do
    	c = mw.ustring.char(c)
    	i = i + 1
        c2 = sans_accents
        if c2 == nil then c2 = c else pos_accent = i end
        if accentue ~= nil then voyelle = i end
        if accentue ~= nil and pos_accent+1 == i then
        	-- une voyelle se trouve juste après l'accent, il faut lui mettre un tréma.
        	if c2 == "ι" then c2 = "ϊ" end
        	if c2 == "υ" then c2 = "ϋ" end
        end
        r3 = r3 .. c2
    end
    if voyelle == 0 then
    	r2 = premier
    else
    	local pre = mw.ustring.sub(r3, 1, voyelle-1)
    	local voy = mw.ustring.sub(r3, voyelle, voyelle)
    	local suf = mw.ustring.sub(r3, voyelle+1, -1)
    	if accentue ~= nil then voy = accentue end
    	r2 = pre .. voy .. suf
    end
    return premier, r2, r3
end

-- vedette extrait le mot à traiter du titre de la page (par défaut)
-- ou du premier argument passé à l'invocation.
function vedette(frame)
	if frame.args == nil or frame.args == nil then
		return mw.title.getCurrentTitle().baseText
	else
		return frame.args
	end
end

local artm = {
    ns = "ο",  as = "τον", gs = "του",
    np = "οι", ap = "τους",  gp = "των",
}

local artf = {
    ns = "η",  as = "τη(ν)", gs = "της",
    np = "οι", ap = "τις",   gp = "των",
}

local artn = {
    ns = "το", as = "το", gs = "του",
    np = "τα", ap = "τα", gp = "των",
}

local articles = {m = artm, f = artf, n = artn}

-- decline décline un mot selon un modèle de déclinaison.
function decline(mot, table_decl)
	local r = tronque(mot, table_decl.desinences.ns)
	local rads = {radicaux(r)}
	local formes = {}
	local formes_alt = {}
	for cas, x in pairs(table_decl.desinences) do
	   local type_rad, desinence = x, x
	   formes = rads .. desinence
	end
	for cas, x in pairs(table_decl.alt) do
	   local type_rad, desinence = x, x
	   formes_alt = rads .. desinence
	end
	return fait_tableau(articles, formes, formes_alt)
end

-- Déclinaisons de noms masculins.
-- - ouranos: ός accentué
-- - dromos/angelos: ος non accentué
-- - antilalos: ος accent fixe
-- - nikitis: ής accentué
-- - navtis: ης non accentué, gén.pl. ών
-- - tamias: ας non accentué, gén.pl. ών
-- - fylakas/agonas: ας non accentué, gén.pl ων
-- - grammateas: -έας, pluriel en -είς
-- - balomatis/sfoungaras/kafes: imparisyllabiques oxytons
-- - manavis: imparisyllabique paroxyton

function p._ouranos(mot)   return decline(mot, data) end
function p._angelos(mot)   return decline(mot, data) end
function p._antilalos(mot) return decline(mot, data) end
function p._nikitis(mot)   return decline(mot, data) end
function p._navtis(mot)    return decline(mot, data) end
function p._tamias(mot)    return decline(mot, data) end
function p._fylakas(mot)   return decline(mot, data) end
function p._grammateas(mot)  return decline(mot, data) end
function p._impari_masc(mot) return decline(mot, data) end

-- Les fonctions à utiliser en temps normal (utilisent le titre de page).
function p.ouranos(frame) return p._ouranos(vedette(frame)) end
function p.dromos(frame)  return p._angelos(vedette(frame)) end
function p.angelos(frame) return p._angelos(vedette(frame)) end -- alias
function p.antilalos(frame) return p._antilalos(vedette(frame)) end
function p.nikitis(frame) return p._nikitis(vedette(frame)) end
function p.navtis(frame)  return p._navtis (vedette(frame)) end
function p.tamias(frame)  return p._tamias (vedette(frame)) end
function p.fylakas(frame) return p._fylakas(vedette(frame)) end
function p.agonas(frame)  return p._fylakas(vedette(frame)) end -- alias
function p.grammateas(frame) return p._grammateas(vedette(frame)) end
function p.balomatis(frame)  return p._impari_masc(vedette(frame)) end -- variante en η
function p.sfoungaras(frame) return p._impari_masc(vedette(frame)) end -- variante en α
function p.kafes(frame)      return p._impari_masc(vedette(frame)) end -- variante en ε
function p.manavis(frame)    return p._impari_masc(vedette(frame)) end -- variante en η proparoxyton

-- Modèles de déclinaison de noms féminins
-- - kardia: ά oxyton
-- - ora/thalassa: α non accentué, -ών
-- - elpida/salpigga: α non accentué, -ων non accentué
-- - psychi: ή oxyton
-- - niki: η, -ών
-- - nosos: oς paroxyton
-- - diametros: ος proparoxyton
-- - skepsi/dynami: η, -εως
-- - giagia/alepou: imparisyllabiques

function p._kardia(mot) return decline(mot, data) end
function p._ora(mot)    return decline(mot, data)    end
function p._elpida(mot) return decline(mot, data) end
function p._psychi(mot) return decline(mot, data) end
function p._niki(mot)   return decline(mot, data)   end
function p._nosos(mot)  return decline(mot, data)  end
function p._dynami(mot) return decline(mot, data) end
function p._giagia(mot) return decline(mot, data) end
	
function p.kardia(frame)   return p._kardia(vedette(frame)) end -- ά
function p.ora(frame)      return p._ora   (vedette(frame)) end -- α
function p.thalassa(frame) return p._ora   (vedette(frame)) end -- α
function p.elpida(frame)   return p._elpida(vedette(frame)) end -- α < 3e décl.
function p.salpigga(frame) return p._elpida(vedette(frame)) end -- α < 3e décl.
function p.psychi(frame)   return p._psychi(vedette(frame)) end -- ή
function p.niki(frame)     return p._niki  (vedette(frame)) end -- η
function p.nosos(frame)    return p._nosos (vedette(frame)) end -- ος
function p.dynami(frame)   return p._dynami(vedette(frame)) end -- η/εις
function p.skepsi(frame)   return p._dynami(vedette(frame)) end -- η/εις
function p.giagia(frame)   return p._giagia(vedette(frame)) end -- pluriel δες
function p.alepou(frame)   return p._giagia(vedette(frame)) end -- pluriel δες

-- Modèles de noms neutres
-- bouno: ό oxyton
-- pevko: ο accent fixe
-- prosopo: -ο accent qui descend
-- provato: -ο accent qui descend optionnellement
-- paidi: -ί oxyton
-- tragoudi: -ι gén. -ιού
-- kyma/onoma: -μα/-ματα
-- desimo: -μο/-ματα
-- meros/edafos: -ος gén. -ους
-- anthos: -ος gén.pl. -έων
-- kreas:  -ας/-ατα
-- mellon: -ον/-οντα

function p._bouno(mot)    return decline(mot, data)    end
function p._pevko(mot)    return decline(mot, data)    end
function p._prosopo(mot)  return decline(mot, data)  end 
function p._provato(mot)  return decline(mot, data)  end 
function p._paidi(mot)    return decline(mot, data)    end
function p._tragoudi(mot) return decline(mot, data) end
function p._onoma(mot)    return decline(mot, data)    end
function p._desimo(mot)   return decline(mot, data)   end
function p._meros(mot)    return decline(mot, data)    end
function p._kreas(mot)    return decline(mot, data)    end
function p._mellon(mot)   return decline(mot, data)   end

function p.bouno(frame)  return p._bouno(vedette(frame)) end -- -ό
function p.pevko(frame)  return p._pevko(vedette(frame)) end -- -ο
function p.prosopo(frame)  return p._prosopo (vedette(frame)) end -- -ο
function p.provato(frame)  return p._provato (vedette(frame)) end -- -ο
function p.paidi(frame)    return p._paidi   (vedette(frame)) end -- -ί
function p.tragoudi(frame) return p._tragoudi(vedette(frame)) end -- -ι
function p.kyma(frame)   return p._onoma(vedette(frame)) end -- -μα
function p.onoma(frame)  return p._onoma(vedette(frame)) end -- -μα
function p.desimo(frame) return p._desimo(vedette(frame)) end -- -μο
function p.meros(frame)  return p._meros(vedette(frame)) end -- -ος
function p.edafos(frame) return p._meros(vedette(frame)) end -- -ος
function p.kreas(frame)  return p._kreas(vedette(frame)) end -- -ας/-ατα
function p.mellon(frame) return p._mellon(vedette(frame)) end -- -ν/-ντα

-- Fonctions de test.

function p.test_masculins(frame)
	return p._ouranos("ουρανός") .. "\r\n" ..
	       p._angelos("λόγος") .. "\r\n" ..
	       p._angelos("άνθρωπος") .. "\r\n" ..
	       p._antilalos("αντίλαλος") .. "\r\n" ..
	       p._nikitis("νικητής") .. "\r\n" ..
	       p._impari_masc("μπαλοματής") .. "\r\n" ..
	       p._navtis("μετανάστης") .. "\r\n" ..
	       p._impari_masc("μανάβης") .. "\r\n" ..
	       p._tamias("ταμίας") .. "\r\n" ..
	       p._fylakas("αγώνας") .. "\r\n" ..
	       p._fylakas("φύλακας") .. "\r\n" ..
	       p._impari_masc("σφουγγαράς") .. "\r\n" ..
	       p._impari_masc("καφές")
end

function p.test_feminins(frame)
    return p._kardia("καρδιά") .. "\r\n" ..
	       p._ora("ώρα") .. "\r\n" ..
	       p._ora("θάλασσα") .. "\r\n" ..
           p._elpida("ελπίδα") .. "\r\n" ..
           p._elpida("σάλπιγγα") .. "\r\n" ..
           p._dynami("δύναμη") .. "\r\n" ..
           p._dynami("σκέψη") .. "\r\n" ..
           p._giagia("γιαγιά") .. "\r\n" ..
           p._giagia("αλεπού") .. "\r\n"
end

function p.test_neutres(frame)
    return p._bouno("βουνό") .. "\r\n" ..
           p._pevko("πεύκο") .. "\r\n" ..
           p._pevko("σίδερο") .. "\r\n" .. -- exemple proparoxyton chez Triantafyllidis
           p._prosopo("πρόσωπο") .. "\r\n" ..
           p._provato("πρόβατο") .. "\r\n" ..
           p._paidi("παιδί") .. "\r\n" ..
           p._tragoudi("τραγούδι") .. "\r\n" ..
           p._onoma("κύμα") .. "\r\n" ..
           p._onoma("όνομα") .. "\r\n" ..
           p._desimo("δέσιμο") .. "\r\n" ..
           p._meros("μέρος") .. "\r\n" ..
           p._meros("έδαφος") .. "\r\n" ..
           p._kreas("κρέας") .. "\r\n" ..
           -- exemples de Triantafyllidis
           p._mellon("μέλλον") .. "\r\n" ..
           p._mellon("καθήκον") .. "\r\n" ..
           p._mellon("σύμπαν") .. "\r\n" ..
           p._mellon("φωνήεν") .. "\r\n"
end

function p.test_radicaux(frame)
    local ret = [==[
Ce test doit afficher:
* δύναμ, δυνάμ, δυναμ
* όνομ, ονόμ, ονομ
* πόλ, πόλ, πολ
* έτ, έτ, ετ
* φ, φ, φ
* ί, ί, ι
* χάιδεμ, χαϊδέμ, χαϊδεμ
* πράυνσ, πραΰνσ, πραϋνσ

Résultat du test:
]==]
    function test_ligne(r)
    	a, b, c = radicaux(r)
    	return "* " .. a .. ", " .. b .. ", " .. c .. "\r\n"
    end
	ret = ret .. test_ligne("δύναμ")
	ret = ret .. test_ligne("όνομ")
	ret = ret .. test_ligne("πόλ")
	ret = ret .. test_ligne("έτ")
	ret = ret .. test_ligne("φ")
	ret = ret .. test_ligne("ί")
	ret = ret .. test_ligne("χάιδεμ")
	ret = ret .. test_ligne("πράυνσ")
	return ret
end

return p