Aller au contenu

Module:cy-nom-sp

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

 Documentation[voir] [modifier] [historique] [purger]

Ce module a pour but d’afficher un tableau contenant les formes mutées au singulier et au pluriel pour les noms gallois ayant un singulier et un pluriel.

Il utilise la fonction frame:getParent, il ne peut donc être appelé que par un modèle.

Voir le modèle {{cy-nom-sp}} pour la description des paramètres.


local p={}

local mut = require("Module:cy-mutation")

function ecritureLigne(txt,titre,s,singulier,p1,pluriel1,p2,pluriel2)
	if p2 then
		if s ~= singulier or p1 ~= pluriel1 or p2 ~= pluriel2 then
			txt = txt .. 
				'|-\n'..
				'! ' .. titre .. '\n'
			if s == singulier then
				txt = txt .. "| ''inchangé''\n"
			else
				txt = txt .. '| [[' .. s .. '#cy|' .. s .. ']]\n'
			end
			if p1 == pluriel1 then
				txt = txt .. "| ''inchangé''\n"
			else
				txt = txt .. '| [[' .. p1 .. '#cy|' .. p1 .. ']]\n'
			end
			if p2 == pluriel2 then
				txt = txt .. "| ''inchangé''\n"
			else
				txt = txt .. '| [[' .. p2 .. '#cy|' .. p2 .. ']]\n'
			end
		end
	elseif p1 then
		if s ~= singulier or p1 ~= pluriel1 then
			txt = txt ..
				'|-\n'..
				'! ' .. titre .. '\n'
			if s == singulier then
				txt = txt .. "| ''inchangé''\n"
			else
				txt = txt .. '| [[' .. s .. '#cy|' .. s .. ']]\n'
			end
			if p1 == pluriel1 then
				txt = txt .. "| ''inchangé''\n"
			else
				txt = txt .. '| [[' .. p1 .. '#cy|' .. p1 .. ']]\n'
			end
		end
    else
		if s ~= singulier then
			txt = txt ..
				'|-\n'..
				'! ' .. titre .. '\n'..
			    '| [[' .. s .. '#cy|' .. s .. ']]\n'
		end
	end
	return txt
end

function p.boite(frame)
	local args = frame:getParent().args
	local singulier = args[1]
	local pluriel   = args[2]
	local pluriel2  = args[3]
	local forme = args["forme"]
	forme = forme or "Singulier"
	local ls, lp, lp2, ns, np, np2, ss, sp, sp2, hs, hp, hp2 =
		nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil
	ls, ns, ss, hs = mut.mutations(singulier)
	if pluriel then
	    lp, np, sp, hp = mut.mutations(pluriel)
    end
	if pluriel2 then
		lp2, np2, sp2, hp2 = mut.mutations(pluriel2)
	end
	local txt =
		'{| class="flextable"\n'..
		'| class="invisible" |\n'..
        '! ' .. forme .. '\n'	
	if pluriel2 then
		txt = txt ..
		'! Pluriel 1\n'..
		'! Pluriel 2\n'
	elseif pluriel then
		txt = txt ..
		'! Pluriel\n'
    end
	txt = txt ..
		'|-\n'..
		'! Non muté\n'..
		'| [[' .. singulier .. '#cy|' .. singulier .. ']]\n'
	if pluriel2 then
		txt = txt ..
		'| [[' .. pluriel .. '#cy|' .. pluriel .. ']]\n'..
		'| [[' .. pluriel2 .. '#cy|' .. pluriel2 .. ']]\n'
	elseif pluriel then
			txt = txt ..
		'| [[' .. pluriel .. '#cy|' .. pluriel .. ']]\n'
	end
	txt = ecritureLigne(txt,'Lénition',ls,singulier,lp,pluriel,lp2,pluriel2)
	txt = ecritureLigne(txt,'Nasalisation',ns,singulier,np,pluriel,np2,pluriel2)
	txt = ecritureLigne(txt,'Spirantisation',ss,singulier,sp,pluriel,sp2,pluriel2)
	txt = ecritureLigne(txt,'Prothèse h',hs,singulier,hp,pluriel,hp2,pluriel2)
	txt = txt .. '|}'
	if not(mw.ustring.match(txt,'Lénition') or
		mw.ustring.match(txt,'Nasalisation') or
		mw.ustring.match(txt,'Spirantisation') or
		mw.ustring.match(txt,'Prothèse h')) then
		txt =
			'{| class="flextable"\n'..
			'! ' .. forme .. '\n'
		if pluriel2 then
			txt = txt ..
			'! Pluriel 1\n'..
			'! Pluriel 2\n'
		elseif pluriel then
			txt = txt ..
			'! Pluriel\n'
		end
		txt = txt ..
			'|-\n'..
			'| [[' .. singulier .. '#cy|' .. singulier .. ']]\n'
		if pluriel2 then
			txt = txt ..
			'| [[' .. pluriel .. '#cy|' .. pluriel .. ']]\n'..
			'| [[' .. pluriel2 .. '#cy|' .. pluriel2 .. ']]\n'
		elseif pluriel then
			txt = txt ..
			'| [[' .. pluriel .. '#cy|' .. pluriel .. ']]\n'
		end
		txt = txt .. '|}'
	end
	return txt
end

return p