Module:hi-accord
Apparence
Ce module a pour but d’afficher les infoboites de flexion en hindi.
Il utilise la fonction frame:getParent
, il ne peut donc être appelé que par un modèle.
Voir le modèle {{hi-accord}}
pour la description des paramètres.
La documentation de ce module est générée par le modèle {{Documentation module}}.
Elle est incluse depuis la page Module:hi-accord/Documentation. Veuillez placer les catégories sur cette page-là.
Les éditeurs peuvent travailler dans le bac à sable (créer).
Voir les statistiques d'appel depuis le wikicode sur l'outil wstat et les appels depuis d'autres modules.
local p={}
function exception(mot,liste)
-- Teste si le mot appartient à une liste d'exceptions.
local resultat = false
local n = #liste
for i = 1,n do
if mot==liste[i] then
resultat=true
break
end
end
return resultat
end
function declinaisons_m_aa_aa(singDir,transSingDir)
-- noms masculins finissant par ा (ā) et le conservant après ajout de la désinence.
local pd=singDir
local so=singDir
local po=singDir.."ओं"
local sv=singDir
local pv=singDir.."ओ"
local tpd=transSingDir
local tso=transSingDir
local tpo=transSingDir.."õ"
local tsv=transSingDir
local tpv=transSingDir.."o"
return pd, so, po, sv, pv, tpd, tso, tpo, tsv, tpv
end
function declinaisons_m_aa(singDir,transSingDir)
-- noms masculins finissant par ा ou आ (ā)
local pd=mw.ustring.sub(singDir,1,-2).."े"
local so=mw.ustring.sub(singDir,1,-2).."े"
local po=mw.ustring.sub(singDir,1,-2).."ों"
local sv=mw.ustring.sub(singDir,1,-2).."े"
local pv=mw.ustring.sub(singDir,1,-2).."ो"
local tpd=mw.ustring.sub(transSingDir,1,-2).."e"
local tso=mw.ustring.sub(transSingDir,1,-2).."e"
local tpo=mw.ustring.sub(transSingDir,1,-2).."õ"
local tsv=mw.ustring.sub(transSingDir,1,-2).."e"
local tpv=mw.ustring.sub(transSingDir,1,-2).."o"
if mw.ustring.sub(singDir,-1) == "आ" then
pd=mw.ustring.sub(singDir,1,-2).."ए"
so=mw.ustring.sub(singDir,1,-2).."ए"
po=mw.ustring.sub(singDir,1,-2).."ओं"
sv=mw.ustring.sub(singDir,1,-2).."ए"
pv=mw.ustring.sub(singDir,1,-2).."ओ"
end
return pd, so, po, sv, pv, tpd, tso, tpo, tsv, tpv
end
function declinaisons_m_i(singDir,transSingDir)
-- noms masculins finissant par ि (i)
local pd=singDir
local so=singDir
local po=singDir.."यों"
local sv=singDir
local pv=singDir.."यो"
local tpd=transSingDir
local tso=transSingDir
local tpo=transSingDir.."yõ"
local tsv=transSingDir
local tpv=transSingDir.."yo"
return pd, so, po, sv, pv, tpd, tso, tpo, tsv, tpv
end
function declinaisons_m_ii(singDir,transSingDir)
-- noms masculins finissant par ी ou ई (ī)
local pd=singDir
local so=singDir
local po=mw.ustring.sub(singDir,1,-2).."ियों"
local sv=singDir
local pv=mw.ustring.sub(singDir,1,-2).."ियो"
local tpd=transSingDir
local tso=transSingDir
local tpo=mw.ustring.sub(transSingDir,1,-2).."iyõ"
local tsv=transSingDir
local tpv=mw.ustring.sub(transSingDir,1,-2).."iyo"
if mw.ustring.sub(singDir,-1) == "ई" then -- par exemple भाई
po=mw.ustring.sub(singDir,1,-2).."इयों"
pv=mw.ustring.sub(singDir,1,-2).."इओ"
end
return pd, so, po, sv, pv, tpd, tso, tpo, tsv, tpv
end
function declinaisons_m_u(singDir,transSingDir)
-- noms masculins finissant par ु (u)
local pd=singDir
local so=singDir
local po=singDir.."ओं"
local sv=singDir
local pv=singDir.."ओ"
local tpd=transSingDir
local tso=transSingDir
local tpo=transSingDir.."õ"
local tsv=transSingDir
local tpv=transSingDir.."o"
return pd, so, po, sv, pv, tpd, tso, tpo, tsv, tpv
end
function declinaisons_m_uu(singDir,transSingDir)
-- noms masculins finissant par ू ou ऊ (ū)
local pd=singDir
local so=singDir
local po=mw.ustring.sub(singDir,1,-2).."ुओं"
local sv=singDir
local pv=mw.ustring.sub(singDir,1,-2).."ुओ"
local tpd=transSingDir
local tso=transSingDir
local tpo=mw.ustring.sub(transSingDir,1,-2).."uõ"
local tsv=transSingDir
local tpv=mw.ustring.sub(transSingDir,1,-2).."uo"
if mw.ustring.sub(singDir,-1) == "ऊ" then -- par exemple ताऊ (tāū)
po=mw.ustring.sub(singDir,1,-2).."उओं"
pv=mw.ustring.sub(singDir,1,-2).."उओ"
end
return pd, so, po, sv, pv, tpd, tso, tpo, tsv, tpv
end
function declinaisons_m_v_aan(singDir,transSingDir)
-- noms masculins finissant par une voyelle suivie de आँ (ā̃)
local pd=mw.ustring.sub(singDir,1,-3).."एँ"
local so=mw.ustring.sub(singDir,1,-3).."एँ"
local po=mw.ustring.sub(singDir,1,-3).."ओं"
local sv=mw.ustring.sub(singDir,1,-3).."एँ"
local pv=mw.ustring.sub(singDir,1,-3).."ओं"
local tpd=mw.ustring.sub(transSingDir,1,-3).."ẽ"
local tso=mw.ustring.sub(transSingDir,1,-3).."ẽ"
local tpo=mw.ustring.sub(transSingDir,1,-3).."õ"
local tsv=mw.ustring.sub(transSingDir,1,-3).."ẽ"
local tpv=mw.ustring.sub(transSingDir,1,-3).."õ"
return pd, so, po, sv, pv, tpd, tso, tpo, tsv, tpv
end
function declinaisons_m_c_aan(singDir,transSingDir)
-- noms masculins finissant par une consonne suivie de ाँ (ā̃)
local pd=mw.ustring.sub(singDir,1,-3).."ें"
local so=mw.ustring.sub(singDir,1,-3).."ें"
local po=mw.ustring.sub(singDir,1,-3).."ों"
local sv=mw.ustring.sub(singDir,1,-3).."ें"
local pv=mw.ustring.sub(singDir,1,-3).."ों"
local tpd=mw.ustring.sub(transSingDir,1,-3).."ẽ"
local tso=mw.ustring.sub(transSingDir,1,-3).."ẽ"
local tpo=mw.ustring.sub(transSingDir,1,-3).."õ"
local tsv=mw.ustring.sub(transSingDir,1,-3).."ẽ"
local tpv=mw.ustring.sub(transSingDir,1,-3).."õ"
return pd, so, po, sv, pv, tpd, tso, tpo, tsv, tpv
end
function declinaisons_m(singDir,transSingDir)
-- noms masculins finissant par une consonne
local pd=singDir
local so=singDir
local po=singDir.."ों"
local sv=singDir
local pv=singDir.."ो"
local tpd=transSingDir
local tso=transSingDir
local tpo=transSingDir.."õ"
local tsv=transSingDir
local tpv=transSingDir.."o"
if mw.ustring.sub(transSingDir,-1) == "a" then -- par exemple मित्र (mitra)
tpo=mw.ustring.sub(transSingDir,1,-2).."õ"
tpv=mw.ustring.sub(transSingDir,1,-2).."o"
end
return pd, so, po, sv, pv, tpd, tso, tpo, tsv, tpv
end
function declinaisons_f_iyaa(singDir,transSingDir)
-- noms féminins finissant par िया (iyā)
local pd=singDir.."ँ"
local so=singDir
local po=mw.ustring.sub(singDir,1,-2).."ों"
local sv=singDir
local pv=mw.ustring.sub(singDir,1,-2).."ो"
local tpd=mw.ustring.sub(transSingDir,1,-2).."ā̃"
local tso=transSingDir
local tpo=mw.ustring.sub(transSingDir,1,-2).."õ"
local tsv=transSingDir
local tpv=mw.ustring.sub(transSingDir,1,-2).."o"
return pd, so, po, sv, pv, tpd, tso, tpo, tsv, tpv
end
function declinaisons_f_aa(singDir,transSingDir)
-- noms féminins finissant par ा ou आ (ā)
local pd=singDir.."एँ"
local so=singDir
local po=singDir.."ओं"
local sv=singDir
local pv=singDir.."ओ"
local tpd=transSingDir.."ẽ"
local tso=transSingDir
local tpo=transSingDir.."õ"
local tsv=transSingDir
local tpv=transSingDir.."o"
return pd, so, po, sv, pv, tpd, tso, tpo, tsv, tpv
end
function declinaisons_f_i(singDir,transSingDir)
-- noms féminins finissant par ि (i)
local pd=singDir.."याँ"
local so=singDir
local po=singDir.."यों"
local sv=singDir
local pv=singDir.."यो"
local tpd=transSingDir.."yā̃"
local tso=transSingDir
local tpo=transSingDir.."yõ"
local tsv=transSingDir
local tpv=transSingDir.."yo"
return pd, so, po, sv, pv, tpd, tso, tpo, tsv, tpv
end
function declinaisons_f_ii(singDir,transSingDir)
-- noms féminins finissant par ी ou ई (ī)
local pd=mw.ustring.sub(singDir,1,-2).."ियाँ"
local so=singDir
local po=mw.ustring.sub(singDir,1,-2).."ियों"
local sv=singDir
local pv=mw.ustring.sub(singDir,1,-2).."ियो"
local tpd=mw.ustring.sub(transSingDir,1,-2).."iyā̃"
local tso=transSingDir
local tpo=mw.ustring.sub(transSingDir,1,-2).."iyõ"
local tsv=transSingDir
local tpv=mw.ustring.sub(transSingDir,1,-2).."iyo"
if mw.ustring.sub(singDir,-1) == "ई" then -- par exemple ताई (tāī)
pd=mw.ustring.sub(singDir,1,-2).."इयाँ"
po=mw.ustring.sub(singDir,1,-2).."इयों"
pv=mw.ustring.sub(singDir,1,-2).."इयो"
end
return pd, so, po, sv, pv, tpd, tso, tpo, tsv, tpv
end
function declinaisons_f_uu(singDir,transSingDir)
-- noms féminins finissant par ू ou ऊ (ū)
local pd=mw.ustring.sub(singDir,1,-2).."ुएँ"
local so=singDir
local po=mw.ustring.sub(singDir,1,-2).."ुओं"
local sv=singDir
local pv=mw.ustring.sub(singDir,1,-2).."ुओ"
local tpd=mw.ustring.sub(transSingDir,1,-2).."uẽ"
local tso=transSingDir
local tpo=mw.ustring.sub(transSingDir,1,-2).."uõ"
local tsv=transSingDir
local tpv=mw.ustring.sub(transSingDir,1,-2).."uo"
if mw.ustring.sub(singDir,-1) == "ऊ" then
pd=mw.ustring.sub(singDir,1,-2).."उएँ"
po=mw.ustring.sub(singDir,1,-2).."उओं"
pv=mw.ustring.sub(singDir,1,-2).."उओ"
end
return pd, so, po, sv, pv, tpd, tso, tpo, tsv, tpv
end
function declinaisons_f(singDir,transSingDir,TPD)
-- noms féminins finissant par une consonne
local pd=singDir.."ें"
local so=singDir
local po=singDir.."ों"
local sv=singDir
local pv=singDir.."ो"
local tpd=transSingDir.."ẽ"
local tso=transSingDir
local tpo=transSingDir.."õ"
local tsv=transSingDir
local tpv=transSingDir.."o"
if TPD then -- par exemple औरत (aurat) औरतें (aurtẽ)
tpd=TPD
tpo=mw.ustring.sub(TPD,1,-2).."õ"
tpv=mw.ustring.sub(TPD,1,-2).."o"
end
return pd, so, po, sv, pv, tpd, tso, tpo, tsv, tpv
end
function declinaisons_adj(singDir,transSingDir)
-- adjectifs finissant par ा (ā) ou ाँ (ā̃)
if mw.ustring.sub(singDir,-1) == "ा" or mw.ustring.sub(singDir,-1) == "आ" then
local radical = mw.ustring.sub(singDir,1,-2)
local transRadical = mw.ustring.sub(transSingDir,1,-2)
local pd=radical.."े"
local tpd=transRadical.."e"
local fs =radical.."ी"
local tfs =transRadical.."ī"
if mw.ustring.sub(singDir,-2) == "या" then -- par exemple नया
pd = mw.ustring.sub(singDir,1,-3).."ए"
tpd = mw.ustring.sub(transSingDir,1,-3).."e"
fs = mw.ustring.sub(singDir,1,-3).."ई"
tfs = mw.ustring.sub(transSingDir,1,-3).."ī"
elseif mw.ustring.sub(singDir,-1) == "या" then
pd = radical.."ए"
fd = radical.."ई"
end
return pd,pd,pd,pd,pd,tpd,tpd,tpd,tpd,tpd,fs,fs,fs,fs,tfs,tfs,tfs,tfs
elseif mw.ustring.sub(singDir,-2) == "ाँ" then
local radical = mw.ustring.sub(singDir,1,-3)
local transRadical = mw.ustring.sub(transSingDir,1,-3)
local pd=radical.."ें"
local tpd=transRadical.."ẽ"
local fs =radical.."ीं"
local tfs =transRadical.."ī̃"
return pd,pd,pd,pd,pd,tpd,tpd,tpd,tpd,tpd,fs,fs,fs,fs,tfs,tfs,tfs,tfs
end
end
function p.boite(frame)
local args = frame:getParent().args
local genre = args[1]
local singDir = args[2]
local transSingDir = args[3]
local vocatif = args["voc"]
local TPD = args["TPD"]
local plurDir,singObl,plurObl,singVoc,plurVoc,
transPlurDir,transSingObl,transPlurObl,transSingVoc,transPlurVoc=
nil,nil,nil,nil,nil,nil,nil,nil,nil,nil
local listeaa={"अधिवक्ता","अपहर्ता","अभिनेता","अभियोक्ता","ऋणदाता","कर्ता","कार्यकर्ता","ख़लीफ़ा","जीजा","ज्ञाता","दाता",
"दादा","नाना","निर्माता","पिता","प्रदाता","फूफा","दाता","देवता","मतदाता","महाधिवक्ता","मामा","मौसा","यज्ञकर्ता","योद्धा",
"राजा","राष्ट्रपिता","वर्मा","विजेता","संवाददाता"}
if genre == "m" or genre == "f" then
if genre == "m" then
if mw.ustring.sub(singDir,-1) == "ा" or mw.ustring.sub(singDir,-1) == "आ" then
if exception(singDir,listeaa) then
plurDir,singObl,plurObl,singVoc,plurVoc,
transPlurDir,transSingObl,transPlurObl,transSingVoc,transPlurVoc=
declinaisons_m_aa_aa(singDir,transSingDir)
else
plurDir,singObl,plurObl,singVoc,plurVoc,
transPlurDir,transSingObl,transPlurObl,transSingVoc,transPlurVoc=
declinaisons_m_aa(singDir,transSingDir)
end
elseif mw.ustring.sub(singDir,-1) == "ि" then
plurDir,singObl,plurObl,singVoc,plurVoc,
transPlurDir,transSingObl,transPlurObl,transSingVoc,transPlurVoc=
declinaisons_m_i(singDir,transSingDir)
elseif mw.ustring.sub(singDir,-1) == "ी" or mw.ustring.sub(singDir,-1) == "ई" then
plurDir,singObl,plurObl,singVoc,plurVoc,
transPlurDir,transSingObl,transPlurObl,transSingVoc,transPlurVoc=
declinaisons_m_ii(singDir,transSingDir)
elseif mw.ustring.sub(singDir,-1) == "ु" then
plurDir,singObl,plurObl,singVoc,plurVoc,
transPlurDir,transSingObl,transPlurObl,transSingVoc,transPlurVoc=
declinaisons_m_u(singDir,transSingDir)
elseif mw.ustring.sub(singDir,-1) == "ू" or mw.ustring.sub(singDir,-1) == "ऊ" then
plurDir,singObl,plurObl,singVoc,plurVoc,
transPlurDir,transSingObl,transPlurObl,transSingVoc,transPlurVoc=
declinaisons_m_uu(singDir,transSingDir)
elseif mw.ustring.sub(singDir,-2) == "आँ" then
plurDir,singObl,plurObl,singVoc,plurVoc,
transPlurDir,transSingObl,transPlurObl,transSingVoc,transPlurVoc=
declinaisons_m_v_aan(singDir,transSingDir)
elseif mw.ustring.sub(singDir,-2) == "ाँ" then
plurDir,singObl,plurObl,singVoc,plurVoc,
transPlurDir,transSingObl,transPlurObl,transSingVoc,transPlurVoc=
declinaisons_m_c_aan(singDir,transSingDir)
else
plurDir,singObl,plurObl,singVoc,plurVoc,
transPlurDir,transSingObl,transPlurObl,transSingVoc,transPlurVoc=
declinaisons_m(singDir,transSingDir)
end
else -- genre == "f"
if mw.ustring.sub(singDir,-3) == "िया" then
plurDir,singObl,plurObl,singVoc,plurVoc,
transPlurDir,transSingObl,transPlurObl,transSingVoc,transPlurVoc=
declinaisons_f_iyaa(singDir,transSingDir)
elseif mw.ustring.sub(singDir,-1) == "ा" or mw.ustring.sub(singDir,-1) == "आ" then
plurDir,singObl,plurObl,singVoc,plurVoc,
transPlurDir,transSingObl,transPlurObl,transSingVoc,transPlurVoc=
declinaisons_f_aa(singDir,transSingDir)
elseif mw.ustring.sub(singDir,-1) == "ि" then
plurDir,singObl,plurObl,singVoc,plurVoc,
transPlurDir,transSingObl,transPlurObl,transSingVoc,transPlurVoc=
declinaisons_f_i(singDir,transSingDir)
elseif mw.ustring.sub(singDir,-1) == "ी" or mw.ustring.sub(singDir,-1) == "ई" then
plurDir,singObl,plurObl,singVoc,plurVoc,
transPlurDir,transSingObl,transPlurObl,transSingVoc,transPlurVoc=
declinaisons_f_ii(singDir,transSingDir)
elseif mw.ustring.sub(singDir,-1) == "ू" or mw.ustring.sub(singDir,-1) == "ऊ" then
plurDir,singObl,plurObl,singVoc,plurVoc,
transPlurDir,transSingObl,transPlurObl,transSingVoc,transPlurVoc=
declinaisons_f_uu(singDir,transSingDir)
else
plurDir,singObl,plurObl,singVoc,plurVoc,
transPlurDir,transSingObl,transPlurObl,transSingVoc,transPlurVoc=
declinaisons_f(singDir,transSingDir,TPD)
end
end
local txt =
'{| class="flextable"\n'..
'| class="invisible" |\n'..
'! Singulier\n'..
'! Pluriel\n'..
'|-\n'..
'! Direct\n'..
'| [[' .. singDir .. '#hi|' .. singDir .. ']]<br />('..transSingDir..')\n'..
'| [[' .. plurDir .. '#hi|' .. plurDir .. ']]<br />('..transPlurDir..')\n'..
'|-\n'..
'! Oblique\n'..
'| [[' .. singObl .. '#hi|' .. singObl .. ']]<br />('..transSingObl..')\n'..
'| [[' .. plurObl .. '#hi|' .. plurObl .. ']]<br />('..transPlurObl..')\n'
if vocatif then
txt = txt..
'|-\n'..
'! Vocatif\n'..
'| [[' .. singVoc .. '#hi|' .. singVoc .. ']]<br />('..transSingVoc..')\n'..
'| [[' .. plurVoc .. '#hi|' .. plurVoc .. ']]<br />('..transPlurVoc..')\n'
end
txt = txt..
'|}'
return txt
elseif genre == "adj" or genre == "mf" then
local fSing,fPlurDir,fPlurObl,fPlurVoc,
fTransSing,fTransPlurDir,fTransPlurObl,fTransPlurVoc=
nil,nil,nil,nil,nil,nil,nil,nil
if genre == "adj" then
plurDir,singObl,plurObl,singVoc,plurVoc,
transPlurDir,transSingObl,transPlurObl,transSingVoc,transPlurVoc,
fSing,fPlurDir,fPlurObl,fPlurVoc,
fTransSing,fTransPlurDir,fTransPlurObl,fTransPlurVoc=
declinaisons_adj(singDir,transSingDir)
else -- genre == "mf"
if mw.ustring.sub(singDir,-1) == "ा" then
if exception(singDir,listeaa) then
plurDir,singObl,plurObl,singVoc,plurVoc,
transPlurDir,transSingObl,transPlurObl,transSingVoc,transPlurVoc=
declinaisons_m_aa_aa(singDir,transSingDir)
else
plurDir,singObl,plurObl,singVoc,plurVoc,
transPlurDir,transSingObl,transPlurObl,transSingVoc,transPlurVoc=
declinaisons_m_aa(singDir,transSingDir)
end
fSing = mw.ustring.sub(singDir,1,-2).."ी"
fTransSing = mw.ustring.sub(transSingDir,1,-2).."ī"
fPlurDir,x,fPlurObl,x,fPlurVoc,
fTransPlurDir,x,fTransPlurObl,x,fTransPlurVoc=
declinaisons_f_ii(fSing,fTransSing)
end
end
local txt =
'{| class="flextable"\n'..
'| class="invisible" |\n'..
'! colspan="2" | Masculin\n'..
'! colspan="2" | Féminin\n'..
'|-\n'..
'| class="invisible" |\n'..
'! Singulier\n'..
'! Pluriel\n'..
'! Singulier\n'..
'! Pluriel\n'..
'|-\n'..
'! Direct\n'..
'| [[' .. singDir .. '#hi|' .. singDir .. ']]<br />('..transSingDir..')\n'..
'| [[' .. plurDir .. '#hi|' .. plurDir .. ']]<br />('..transPlurDir..')\n'..
'| [[' .. fSing .. '#hi|' .. fSing .. ']]<br />('..fTransSing..')\n'..
'| [[' .. fPlurDir .. '#hi|' .. fPlurDir .. ']]<br />('..fTransPlurDir..')\n'..
'|-\n'..
'! Oblique\n'..
'| [[' .. singObl .. '#hi|' .. singObl .. ']]<br />('..transSingObl..')\n'..
'| [[' .. plurObl .. '#hi|' .. plurObl .. ']]<br />('..transPlurObl..')\n'..
'| [[' .. fSing .. '#hi|' .. fSing .. ']]<br />('..fTransSing..')\n'..
'| [[' .. fPlurObl .. '#hi|' .. fPlurObl .. ']]<br />('..fTransPlurObl..')\n'
if vocatif then
txt = txt..
'|-\n'..
'! Vocatif\n'..
'| [[' .. singVoc .. '#hi|' .. singVoc .. ']]<br />('..transSingVoc..')\n'..
'| [[' .. plurVoc .. '#hi|' .. plurVoc .. ']]<br />('..transPlurVoc..')\n'..
'| [[' .. fSing .. '#hi|' .. fSing .. ']]<br />('..fTransSing..')\n'..
'| [[' .. fPlurVoc .. '#hi|' .. fPlurVoc .. ']]<br />('..fTransPlurVoc..')\n'
end
txt = txt..
'|}'
return txt
end
end
return p