Modulo:Es-conj

Hello, you have come here looking for the meaning of the word Modulo:Es-conj. In DICTIOUS you will not only get to know all the dictionary meanings for the word Modulo:Es-conj, but we will also tell you about its etymology, its characteristics and you will know how to say Modulo:Es-conj in singular and plural. Everything you need to know about the word Modulo:Es-conj you have here. The definition of the word Modulo:Es-conj will help you to be more precise and correct when speaking or writing your texts. Knowing the definition ofModulo:Es-conj, as well as those of other words, enriches your vocabulary and provides you with more and better linguistic resources.

La documentazione per questo modulo può essere creata in Modulo:Es-conj/man

-- Questo modulo contiene il codice per il template:Es-conj, che genera la coniugazione di tutti i verbi spagnoli
-- La funzione esconj genera la tabella di coniugazione utilizzando i parametri passati dal template

p = {}

local function categorizza(cat, titolo) --funzione per categorizzare, by Wim_b
local NS = tostring(mw.title.getCurrentTitle().namespace);

	if NS == '100' then
		return string.format(']', mw.site.namespaces.name, cat, titolo)
	else
		return ''
	end
end

function p.esconj(frame)
    pframe = frame:getParent()
    config = frame.args
    args = pframe.args
    titolo = mw.title.getCurrentTitle().subpageText --il titolo della pagina, senza 'Appendice/Coniugazioni/Spagnolo'
    
    -- Argomenti passati dal template
    radice = args
    
-- Inizializzazione di tutte le stringhe come nulle, per evitare errori di concatenazione
	descr = ""; conjdescr = ""; conjcat = ""; reg_irreg = ""; irregolare = ""; irregolarecat = ""; irregolaredescr = ""
	refl_exist = ""; refl_link = ""; refl_conjlink = ""
    ausiliare = ""
    inf = ""; ger = ""; par= ""; pp = ""; pplur = ""; pprifl = ""
    pres1s = ""; pres1s2 = ""; pres2s=""; pres2sform = ""; pres3s = ""; pres1p = ""; pres2p = ""; pres3p = ""
    imperf1s = ""; imperf2s=""; imperf3s = ""; imperf1p = ""; imperf2p = ""; imperf3p = ""
    prem1s = ""; prem1s2 = ""; prem2s = ""; prem3s = ""; prem3s2 = ""; prem1p = ""; prem2p = ""; prem3p = ""; prem3p2 = ""
    fut1s = ""; fut2s=""; fut3s = ""; fut1p =" "; fut2p = ""; fut3p = ""
    cond1s = ""; cond2s=""; cond3s = ""; cond1p = ""; cond2p = ""; cond3p = ""
    cong1s = ""; cong2s = ""; cong2sform = ""; cong3s = ""; cong1p = ""; cong2p = ""; cong3p = ""
    congimp1s =""; congimp1s2 = ""; congimp2s = ""; congimp2s2 = ""; congimp3s = ""; congimp3s2 = ""; congimp1p = ""; congimp1p2 = ""; congimp2p = ""; congimp2p2 = ""; congimp3p = ""; congimp3p2 = ""
    congfut1s = ""; congfut2s = ""; congfut3s = ""; congfut1p = ""; congfut2p = ""; congfut3p = ""
    imp2s=""; imp2s2 = ""; imp2sform = ""; imp2sneg = ""; imp2s3 = ""; imp3s = ""; imp1p = ""; imp2p = ""; imp2pneg = "" imp3p = ""
    me = ""; te = ""; se = ""; nos = ""; os = ""
    paspros = ""; trappros = ""; traprem = ""; futant = ""; condpas = ""; congpas = ""; congtrap = ""
    paspros1s = ""; paspros2s=""; paspros3s = ""; paspros1p = ""; paspros2p = ""; paspros3p = ""
    trappros1s = ""; trappros2s=""; trappros3s = ""; trappros1p = ""; trappros2p = ""; trappros3p = ""
    traprem1s = ""; traprem2s=""; traprem3s = ""; traprem1p = ""; traprem2p = ""; traprem3p = ""
    futant1s = ""; futant2s=""; futant3s = ""; futant1p = ""; futant2p = ""; futant3p = ""
    condpas1s = ""; condpas2s=""; condpas3s = ""; condpas1p = ""; condpas2p = ""; condpas3p = ""
    congpas1s = ""; congpas2s=""; congpas3s = ""; congpas1p = ""; congpas2p = ""; congpas3p = ""
    congtrap1s = ""; congtrap2s=""; congtrap3s = ""; congtrap1p = ""; congtrap2p = ""; congtrap3p = ""
    congfutant1s = ""; congfutant2s=""; congfutant3s = ""; congfutant1p = ""; congfutant2p = ""; congfutant3p = ""
    
-- A partire dalla coniugazione, genera le forme coniugate standard per ciascuna tipologia di verbo
    type = config
    if type == nil then
        inf = p.wiki(args)
    elseif (type == "ar") or (type == "arse") then
    	inf = p.wiki(radice .. "ar")
    	ger = p.wiki(radice.."ando")
    	pp = p.wiki(radice .. "ado"); pplur = p.wiki(radice.."ados")
        pres1s = p.wiki(radice .. "o");  pres2s = p.wiki(radice .. "as"); pres2sform = p.wiki(radice.."ás")  pres3s = p.wiki(radice .. "a")
        pres1p = p.wiki(radice .. "amos");  pres2p = p.wiki(radice .. "áis");  pres3p = p.wiki(radice .. "an")        
        imperf1s = p.wiki(radice .. "aba");  imperf2s = p.wiki(radice .. "abas");  imperf3s = p.wiki(radice .. "aba")
        imperf1p = p.wiki(radice .. "ábamos");  imperf2p = p.wiki(radice .. "abais");  imperf3p = p.wiki(radice .. "aban") 
        prem1s = p.wiki(radice .. "é");  prem2s = p.wiki(radice .. "aste");  prem3s = p.wiki(radice .. "ó")
        prem1p = p.wiki(radice .. "amos");  prem2p = p.wiki(radice .. "asteis");  prem3p = p.wiki(radice .. "aron") 
        fut1s = p.wiki(radice .. "aré");  fut2s = p.wiki(radice .. "arás");  fut3s = p.wiki(radice .. "ará")
        fut1p = p.wiki(radice .. "aremos");  fut2p = p.wiki(radice .. "aréis");  fut3p = p.wiki(radice .. "arán") 
        cond1s = p.wiki(radice .. "aría");  cond2s = p.wiki(radice .. "arías");  cond3s = p.wiki(radice .. "aría")
        cond1p = p.wiki(radice .. "aríamos");  cond2p = p.wiki(radice .. "aríais");  cond3p = p.wiki(radice .. "arían") 
        cong1s = p.wiki(radice .. "e"); cong2s = p.wiki(radice .. "es"); cong2sform = p.wiki(radice.. "és"); cong3s = p.wiki(radice .. "e")
        cong1p = p.wiki(radice .. "emos");  cong2p = p.wiki(radice .. "éis");  cong3p = p.wiki(radice .. "en")
        congimp1s_ra = p.wiki(radice .. "ara"); congimp2s_ra = p.wiki(radice.. "aras");  congimp3s_ra = p.wiki(radice .. "ara")
        congimp1p_ra = p.wiki(radice .. "áramos");  congimp2p_ra = p.wiki(radice .. "arais");  congimp3p_ra = p.wiki(radice .. "aran")
        congimp1s_se = p.wiki(radice .. "ase"); congimp2s_se = p.wiki(radice.. "ases");  congimp3s_se = p.wiki(radice .. "ase")
        congimp1p_se = p.wiki(radice .. "ásemos");  congimp2p_se = p.wiki(radice .. "aseis");  congimp3p_se = p.wiki(radice .. "asen")
        congfut1s = p.wiki(radice .. "are"); congfut2s = p.wiki(radice.. "ares");  congfut3s = p.wiki(radice .. "are")
        congfut1p = p.wiki(radice .. "áremos");  congfut2p = p.wiki(radice .. "areis");  congfut3p = p.wiki(radice .. "aren")
        imp2s = p.wiki(radice .. "a");  imp2sform = p.wiki(radice.."á"); imp3s = p.wiki(radice.."e")
        imp1p = p.wiki(radice .. "emos");  imp2p = p.wiki(radice .. "ad");  imp3p = p.wiki(radice.."en") 
        imp2sneg = p.wiki(radice .. "es"); imp2pneg = p.wiki(radice.."éis")
    elseif (type == "er") or (type == "erse") then
    	inf = p.wiki(radice .. "er")
    	ger = p.wiki(radice.."iendo")
    	pp = p.wiki(radice .. "ido"); pplur = p.wiki(radice.."idos")
        pres1s = p.wiki(radice .. "o");  pres2s = p.wiki(radice .. "es"); pres2sform = p.wiki(radice.."és")  pres3s = p.wiki(radice .. "e")
        pres1p = p.wiki(radice .. "emos");  pres2p = p.wiki(radice .. "éis");  pres3p = p.wiki(radice .. "en")        
        imperf1s = p.wiki(radice .. "ía");  imperf2s = p.wiki(radice .. "ías");  imperf3s = p.wiki(radice .. "ía")
        imperf1p = p.wiki(radice .. "íamos");  imperf2p = p.wiki(radice .. "íais");  imperf3p = p.wiki(radice .. "ían") 
        prem1s = p.wiki(radice .. "í");  prem2s = p.wiki(radice .. "iste");  prem3s = p.wiki(radice .. "ió")
        prem1p = p.wiki(radice .. "imos");  prem2p = p.wiki(radice .. "isteis");  prem3p = p.wiki(radice .. "ieron") 
        fut1s = p.wiki(radice .. "eré");  fut2s = p.wiki(radice .. "erás");  fut3s = p.wiki(radice .. "erá")
        fut1p = p.wiki(radice .. "eremos");  fut2p = p.wiki(radice .. "eréis");  fut3p = p.wiki(radice .. "erán") 
        cond1s = p.wiki(radice .. "ería");  cond2s = p.wiki(radice .. "erías");  cond3s = p.wiki(radice .. "ería")
        cond1p = p.wiki(radice .. "eríamos");  cond2p = p.wiki(radice .. "eríais");  cond3p = p.wiki(radice .. "erían") 
        cong1s = p.wiki(radice .. "a"); cong2s = p.wiki(radice .. "as"); cong2sform = p.wiki(radice.. "ás"); cong3s = p.wiki(radice .. "a")
        cong1p = p.wiki(radice .. "amos");  cong2p = p.wiki(radice .. "áis");  cong3p = p.wiki(radice .. "an")
        congimp1s_ra = p.wiki(radice .. "iera"); congimp2s_ra = p.wiki(radice.. "ieras");  congimp3s_ra = p.wiki(radice .. "iera")
        congimp1p_ra = p.wiki(radice .. "iéramos");  congimp2p_ra = p.wiki(radice .. "ierais");  congimp3p_ra = p.wiki(radice .. "ieran")
        congimp1s_se = p.wiki(radice .. "iese"); congimp2s_se = p.wiki(radice.. "ieses");  congimp3s_se = p.wiki(radice .. "iese")
        congimp1p_se = p.wiki(radice .. "iésemos");  congimp2p_se = p.wiki(radice .. "ieseis");  congimp3p_se = p.wiki(radice .. "iesen")
        congfut1s = p.wiki(radice .. "iere"); congfut2s = p.wiki(radice.. "ieres");  congfut3s = p.wiki(radice .. "iere")
        congfut1p = p.wiki(radice .. "iéremos");  congfut2p = p.wiki(radice .. "iereis");  congfut3p = p.wiki(radice .. "ieren")
        imp2s = p.wiki(radice .. "e");  imp2sform = p.wiki(radice.."é"); imp3s = p.wiki(radice.."a")
        imp1p = p.wiki(radice .. "amos");  imp2p = p.wiki(radice .. "ed");  imp3p = p.wiki(radice.."an") 
        imp2sneg = p.wiki(radice .. "as"); imp2pneg = p.wiki(radice.. "áis")
    elseif (type == "ir") or (type == "irse") then
    	inf = p.wiki(radice .. "ir")
    	ger = p.wiki(radice.."iendo")
    	pp = p.wiki(radice .. "ido"); pplur = p.wiki(radice.."idos")
        pres1s = p.wiki(radice .. "o");  pres2s = p.wiki(radice .. "es"); pres2sform = p.wiki(radice.."ís")  pres3s = p.wiki(radice .. "e")
        pres1p = p.wiki(radice .. "imos");  pres2p = p.wiki(radice .. "ís");  pres3p = p.wiki(radice .. "en")        
        imperf1s = p.wiki(radice .. "ía");  imperf2s = p.wiki(radice .. "ías");  imperf3s = p.wiki(radice .. "ía")
        imperf1p = p.wiki(radice .. "íamos");  imperf2p = p.wiki(radice .. "íais");  imperf3p = p.wiki(radice .. "ían") 
        prem1s = p.wiki(radice .. "í");  prem2s = p.wiki(radice .. "iste");  prem3s = p.wiki(radice .. "ió")
        prem1p = p.wiki(radice .. "imos");  prem2p = p.wiki(radice .. "isteis");  prem3p = p.wiki(radice .. "ieron") 
        fut1s = p.wiki(radice .. "iré");  fut2s = p.wiki(radice .. "irás");  fut3s = p.wiki(radice .. "irá")
        fut1p = p.wiki(radice .. "iremos");  fut2p = p.wiki(radice .. "iréis");  fut3p = p.wiki(radice .. "irán") 
        cond1s = p.wiki(radice .. "iría");  cond2s = p.wiki(radice .. "irías");  cond3s = p.wiki(radice .. "iría")
        cond1p = p.wiki(radice .. "iríamos");  cond2p = p.wiki(radice .. "iríais");  cond3p = p.wiki(radice .. "irían") 
        cong1s = p.wiki(radice .. "a"); cong2s = p.wiki(radice .. "as"); cong2sform = p.wiki(radice.. "ás"); cong3s = p.wiki(radice .. "a")
        cong1p = p.wiki(radice .. "amos");  cong2p = p.wiki(radice .. "áis");  cong3p = p.wiki(radice .. "an")
        congimp1s_ra = p.wiki(radice .. "iera"); congimp2s_ra = p.wiki(radice.. "ieras");  congimp3s_ra = p.wiki(radice .. "iera")
        congimp1p_ra = p.wiki(radice .. "iéramos");  congimp2p_ra = p.wiki(radice .. "ierais");  congimp3p_ra = p.wiki(radice .. "ieran")
        congimp1s_se = p.wiki(radice .. "iese"); congimp2s_se = p.wiki(radice.. "ieses");  congimp3s_se = p.wiki(radice .. "iese")
        congimp1p_se = p.wiki(radice .. "iésemos");  congimp2p_se = p.wiki(radice .. "ieseis");  congimp3p_se = p.wiki(radice .. "iesen")
        congfut1s = p.wiki(radice .. "iere"); congfut2s = p.wiki(radice.. "ieres");  congfut3s = p.wiki(radice .. "iere")
        congfut1p = p.wiki(radice .. "iéremos");  congfut2p = p.wiki(radice .. "iereis");  congfut3p = p.wiki(radice .. "ieren")
        imp2s = p.wiki(radice .. "e");  imp2sform = p.wiki(radice.."í"); imp3s = p.wiki(radice.."a")
        imp1p = p.wiki(radice .. "amos");  imp2p = p.wiki(radice .. "id");  imp3p = p.wiki(radice.."an") 
        imp2sneg = p.wiki(radice .. "as"); imp2pneg = p.wiki(radice.. "áis")
    else error("Verb type " .. type .. "not supported.")
    end
    
--sistema automaticamente le particolarità della prima coniugazione
	if type == "ar" or type == "arse" then
--VERBI IN -CAR: la -c- diventa qu davanti alle uscite in -e
		if mw.ustring.sub(radice, -1) == "c" then
			radice2 = mw.ustring.sub(radice, 1, -2).. "qu"
			prem1s = p.wiki(radice2.. "é")
			cong1s = p.wiki(radice2 .. "e"); cong2s = p.wiki(radice2 .. "es"); cong2sform = p.wiki(radice2.. "és"); cong3s = p.wiki(radice2 .. "e")
        	cong1p = p.wiki(radice2 .. "emos");  cong2p = p.wiki(radice2 .. "éis");  cong3p = p.wiki(radice2 .. "en")
    		imp3s = p.wiki(radice2.."e")
        	imp1p = p.wiki(radice2 .. "emos");  imp3s = p.wiki(radice2.."en") 
        end
    end
-- Determina se il verbo è riflessivo 
	if type == "arse" or type == "erse" or type == "irse" then refl = true else	refl = false end
		
-- Genera le voci verbali specifiche per i verbi riflessivi
	if type == "arse" then
		refl = true
		inf = p.wiki(radice.. "arse")

	elseif type == "erse" then
		refl = true
		inf = p.wiki(radice.. "erse")

	elseif type == "irse" then
		refl = true
		inf = p.wiki(radice.. "irse")
	end
		
-- Genera i pronomi riflessivi
    if refl == true then
		me = "me "; te = "te "; se = "se "; nos = "nos "; os = "os "
	end
	
--genera il link ai riflessivi
	if refl == false then
		if mw.title.new("Appendice:Coniugazioni/Spagnolo/".. titolo.. "se").exists == true then
			refl_exist = true; refl_link = p.wiki(titolo.. "se"); refl_conjlink = " (])" --se esiste il riflessivo, genera link al verbo in ns0 e alla relativa coniugazione in appendice
		else
			refl_exist = false; refl_link = ""; refl_conjlink = "" --se non esiste il riflessivo, annulla i link
		end
	elseif refl == true then
		infattivo = mw.ustring.sub(titolo, 1, -3) --l'infinito del verbo attivo, uguale al titolo senza il "se" alla fine
		if mw.title.new("Appendice:Coniugazioni/Spagnolo/".. infattivo).exists == true then
			refl_exist = true; refl_link = p.wiki(infattivo); refl_conjlink = " (])" --se esiste il verbo attivo, genera link al verbo in ns0 e alla relativa coniugazione in appendice
		else
			refl_exist = false; refl_link = ""; refl_conjlink = "" --se non esiste il verbo attivo, annulla i link
		end
	end
	
-- Recupera le eventuali forme irregolari o varianti, rimpiazziandole o aggiungendole a quelle standard
-- Forme impersonali e participi
    inf = p.over(inf,args)
    ger = p.over(ger,args)
    ger2 = p.wiki(args)
    ger = p.alts(ger, ger2)
    pp = p.over(pp,args)
    pp2 = p.wiki(args);  pp3 = p.wiki(args);  pp3 = p.wiki(args);  pp4 = p.wiki(args);  pp5 = p.wiki(args)
    pp = p.alts(pp, pp2); pp = p.alts(pp, pp3); pp = p.alts(pp, pp4); pp = p.alts(pp, pp5)
-- Presente indicativo
    pres1s = p.over(pres1s,args); pres2s = p.over(pres2s,args); pres2sform = p.over(pres2sform,args); pres3s = p.over(pres3s,args)
    pres1p = p.over(pres1p,args); pres2p = p.over(pres2p,args); pres3p = p.over(pres3p,args)
    pres1s2 = p.wiki(args);  pres2s2 = p.wiki(args);  pres3s2 = p.wiki(args)
    pres1p2 = p.wiki(args);  pres2p2 = p.wiki(args);  pres3p2 = p.wiki(args)
    pres1s = p.alts(pres1s, pres1s2); pres2s = p.alts(pres2s, pres2s2); pres3s = p.alts(pres3s, pres3s2) 
    pres1p = p.alts(pres1p, pres1p2); pres2p = p.alts(pres2p, pres2p2); pres3p = p.alts(pres3p, pres3p2)     
-- Imperfetto
    imperf1s = p.over(imperf1s,args); imperf2s = p.over(imperf2s,args); imperf3s = p.over(imperf3s,args)
    imperf1p = p.over(imperf1p,args); imperf2p = p.over(imperf2p,args); imperf3p = p.over(imperf3p,args)
    imperf1s2 = p.wiki(args);  imperf2s2 = p.wiki(args);  imperf3s2 = p.wiki(args)
    imperf1p2 = p.wiki(args);  imperf2p2 = p.wiki(args);  imperf3p2 = p.wiki(args)
    imperf1s = p.alts(imperf1s, imperf1s2); imperf2s = p.alts(imperf2s, imperf2s2); imperf3s = p.alts(imperf3s, imperf3s2)
    imperf1p = p.alts(imperf1p, imperf1p2); imperf2p = p.alts(imperf2p, imperf2p2); imperf3p = p.alts(imperf3p, imperf3p2)
-- Preterito (Passato REMoto)
    prem1s = p.over(prem1s,args); prem2s = p.over(prem2s,args); prem3s = p.over(prem3s,args)
    prem1p = p.over(prem1p,args); prem2p = p.over(prem2p,args); prem3p = p.over(prem3p,args)
    prem1s = p.alts(prem1s, prem1s2); prem2s = p.alts(prem2s, prem2s2); prem3s = p.alts(prem3s, prem3s2)
    prem1p = p.alts(prem1p, prem1p2); prem2p = p.alts(prem2p, prem2p2); prem3p = p.alts(prem3p, prem3p2)
-- Futuro
    fut1s = p.over(fut1s,args); fut2s = p.over(fut2s,args); fut3s = p.over(fut3s,args)
    fut1p = p.over(fut1p,args); fut2p = p.over(fut2p,args); fut3p = p.over(fut3p,args)
    fut1s2 = p.wiki(args);  fut2s2 = p.wiki(args);  fut3s2 = p.wiki(args)
    fut1p2 = p.wiki(args);  fut2p2 = p.wiki(args);  fut3p2 = p.wiki(args)
    fut1s = p.alts(fut1s, fut1s2); fut2s = p.alts(fut2s, fut2s2); fut3s = p.alts(fut3s, fut3s2)
    fut1p = p.alts(fut1p, fut1p2); fut2p = p.alts(fut2p, fut2p2); fut3p = p.alts(fut3p, fut3p2)
-- Condizionale
    cond1s = p.over(cond1s,args); cond2s = p.over(cond2s,args); cond3s = p.over(cond3s,args)
    cond1p = p.over(cond1p,args); cond2p = p.over(cond2p,args); cond3p = p.over(cond3p,args)
    cond1s2 = p.wiki(args);  cond2s2 = p.wiki(args);  cond3s2 = p.wiki(args)
    cond1p2 = p.wiki(args);  cond2p2 = p.wiki(args);  cond3p2 = p.wiki(args)
    cond1s = p.alts(cond1s, cond1s2); cond2s = p.alts(cond2s, cond2s2); cond3s = p.alts(cond3s, cond3s2)
    cond1p = p.alts(cond1p, cond1p2); cond2p = p.alts(cond2p, cond2p2); cond3p = p.alts(cond3p, cond3p2)
-- Presente congiuntivo
    cong1s = p.over(cong1s,args); cong2s = p.over(cong2s,args); cong3s = p.over(cong3s,args)
    cong1p = p.over(cong1p,args); cong2p = p.over(cong2p,args); cong3p = p.over(cong3p,args)
    cong1s2 = p.wiki(args); cong2s2 = p.wiki(args); cong3s2 = p.wiki(args)
    cong1p2 = p.wiki(args);  cong2p2 = p.wiki(args);  cong3p2 = p.wiki(args)
    cong1s = p.alts(cong1s, cong1s2); cong2s = p.alts(cong2s, cong2s2) cong3s = p.alts(cong3s, cong3s2)
    cong1p = p.alts(cong1p, cong1p2); cong2p = p.alts(cong2p, cong2p2); cong3p = p.alts(cong3p, cong3p2)
-- Imperfetto congiuntivo
    congimp1s = p.over(congimp1s,args); congimp2s = p.over(congimp2s,args); congimp3s = p.over(congimp3s,args)
    congimp1p = p.over(congimp1p,args); congimp2p = p.over(congimp2p,args); congimp3p = p.over(congimp3p,args)
    congimp1s2 = p.wiki(args); congimp2s2 = p.wiki(args);  congimp3s2 = p.wiki(args)
    congimp1p2 = p.wiki(args);  congimp2p2 = p.wiki(args);  congimp3p2 = p.wiki(args)
    congimp1s = p.alts(congimp1s, congimp1s2); congimp2s = p.alts(congimp2s, congimp2s2); congimp3s = p.alts(congimp3s, congimp3s2)
    congimp1p = p.alts(congimp1p, congimp1p2); congimp2p = p.alts(congimp2p, congimp2p2); congimp3p = p.alts(congimp3p, congimp3p2)    
-- Imperativo
	imp2s = p.over(imp2s,args); imp3s = p.over(imp3s,args)
    imp1p = p.over(imp1p,args); imp2p = p.over(imp2p,args); imp3p = p.over(imp3p,args)
    imp2s2 = p.over(imp2s2, args);  imp3s2 = p.wiki(args)
    imp1p2 = p.wiki(args);  imp2p2 = p.wiki(args);  imp3p2 = p.wiki(args)
    imp2s = p.alts(imp2s, imp2s2); imp3s = p.alts(imp3s, imp3s2)
    imp1p = p.alts(imp1p, imp1p2); imp2p = p.alts(imp2p, imp2p2); imp3p = p.alts(imp3p, imp3p2)
-- Alternativa extra per l'imperativo
     imp2s3 = p.over(imp2s3, args); imp2s = p.alts(imp2s, imp2s3)
     
--cerca se uno qualsiasi dei parametri è definito, e in base a questo definisce la stringa reg_irreg come "irregolare" o "regolare"
    if 
	    args ~= nil or args ~= nil or args ~= nil or args ~= nil
	    or args ~= nil or args ~= nil or args ~= nil or args ~= nil or args ~= nil or args ~= nil or args ~= nil
	    or args ~= nil or args ~= nil or args ~= nil or args ~= nil or args ~= nil or args ~= nil
	    or args ~= nil or args ~= nil or args ~= nil or args ~= nil or args ~= nil or args ~= nil or args ~= nil or args ~= nil or args ~= nil
	    or args ~= nil or args ~= nil or args ~= nil or args ~= nil or args ~= nil or args ~= nil
	    or args ~= nil or args ~= nil or args ~= nil or args ~= nil or args ~= nil or args ~= nil
	    or args ~= nil or args ~= nil or args ~= nil or args ~= nil or args ~= nil or args ~= nil
	    or args ~= nil or args ~= nil or args ~= nil or args ~= nil or args ~= nil or args ~= nil
	    or args ~= nil or args ~= nil or args ~= nil or args ~= nil or args ~= nil or args ~= nil
    then 
    	if args == "no" then
    		irregolaredescr = ""; reg_irreg = " regolari "
    	else
    		irregolaredescr = " '''(irregolare)'''"; reg_irreg = " irregolari "
		end
    else --se nessun parametro è definito...
    		irregolaredescr = ""; reg_irreg = " regolari "
	end

--in base alla desinenza "type", costruisce la descizione e aggiunge le categorie
    if type == "ar" then
    		conjdescr = "'''verbo di prima coniugazione'''"; conjcat = categorizza("Coniugazioni dei verbi di prima coniugazione in spagnolo",titolo)
    		irregolarecat = categorizza("Coniugazioni dei verbi".. reg_irreg.. "in spagnolo",titolo).." "..categorizza("Coniugazioni dei verbi".. reg_irreg.. "di prima coniugazione in spagnolo",titolo)
    elseif type == "er" then
    		conjdescr = "'''verbo di seconda coniugazione'''"; conjcat = categorizza("Coniugazioni dei verbi di seconda coniugazione in spagnolo", titolo)
    		irregolarecat = categorizza("Coniugazioni dei verbi".. reg_irreg.. "in spagnolo", titolo).." "..categorizza("Coniugazioni dei verbi".. reg_irreg.. "di seconda coniugazione in spagnolo", titolo)
    elseif type == "ir" then
    		conjdescr = "'''verbo di terza coniugazione'''"; conjcat = categorizza("Coniugazioni dei verbi di terza coniugazione in spagnolo", titolo)
    		irregolarecat = categorizza("Coniugazioni dei verbi".. reg_irreg.. "in spagnolo", titolo).." "..categorizza("Coniugazioni dei verbi".. reg_irreg.. "di terza coniugazione in spagnolo", titolo)
    elseif type == "arse" then
    		conjdescr = "'''verbo riflessivo pronominale di prima coniugazione'''"; conjcat = categorizza("Coniugazioni dei verbi di prima coniugazione in spagnolo",titolo).." "..categorizza("Coniugazioni dei verbi riflessivi pronominali in spagnolo", titolo).." "..categorizza("Coniugazioni dei verbi riflessivi pronominali di prima coniugazione in spagnolo", titolo)
    		irregolarecat = categorizza("Coniugazioni dei verbi".. reg_irreg.. "in spagnolo", titolo).." "..categorizza("Coniugazioni dei verbi".. reg_irreg.. "di prima coniugazione in spagnolo", titolo).." "..categorizza("Coniugazioni dei verbi riflessivi pronominali".. reg_irreg.. "in spagnolo", titolo).." "..categorizza("Coniugazioni dei verbi riflessivi pronominali".. reg_irreg.. "di prima coniugazione in spagnolo", titolo)
    		irregolarecat = categorizza("Coniugazioni dei verbi".. reg_irreg.. "in spagnolo", titolo).." "..categorizza("Coniugazioni dei verbi".. reg_irreg.. "di prima coniugazione in spagnolo", titolo).." "..categorizza("Coniugazioni dei verbi riflessivi pronominali".. reg_irreg.. "in spagnolo", titolo).." "..categorizza("Coniugazioni dei verbi riflessivi pronominali".. reg_irreg.. "di prima coniugazione in spagnolo", titolo)
    elseif type == "erse" then
    		conjdescr = "'''verbo riflessivo pronominale di seconda coniugazione'''"; conjcat = categorizza("Coniugazioni dei verbi di seconda coniugazione in spagnolo", titolo).." "..categorizza("Coniugazioni dei verbi riflessivi pronominali in spagnolo", titolo).." "..categorizza("Coniugazioni dei verbi riflessivi pronominali di seconda coniugazione in spagnolo", titolo)
    		irregolarecat = categorizza("Coniugazioni dei verbi".. reg_irreg.. "in spagnolo", titolo).." "..categorizza("Coniugazioni dei verbi".. reg_irreg.. "di seconda coniugazione in spagnolo", titolo).." "..categorizza("Coniugazioni dei verbi riflessivi pronominali".. reg_irreg.. "in spagnolo", titolo).." "..categorizza("Coniugazioni dei verbi riflessivi pronominali".. reg_irreg.. "di seconda coniugazione in spagnolo", titolo)
    elseif type == "irse" then
    		conjdescr = "'''verbo riflessivo pronominale di terza coniugazione'''"; conjcat = categorizza("Coniugazioni dei verbi di terza coniugazione in spagnolo", titolo).." "..categorizza("Coniugazioni dei verbi riflessivi pronominali in spagnolo", titolo).." "..categorizza("Coniugazioni dei verbi riflessivi pronominali di terza coniugazione in spagnolo", titolo)
    end
    		
--stringa "descrizione", raggruppa tutte le stringhe definite prima per la descrizione e le categorie della coniugazione, regolari/irregolari e riflessivi
	descrizione = categorizza("Coniugazioni in spagnolo", titolo).. conjdescr.. conjcat.. irregolaredescr.. irregolarecat
	
--tempi composti
	if args ~= nil then pplur = ".. "s]]" end
	if pp2 >= "a" then pplur2 = ".. "s]]" else pplur2 = "0" end
    pplur = p.alts(pplur, pplur2)
   	ausiliare = "]"
		if pp ~= "" then
	    --passato prossimo (pretérito perfecto)
	    	paspros1s = "] ".. pp; paspros2s = "] ".. pp; paspros3s = "] ".. pp
	    	paspros1p = "] ".. pp; paspros2p = "] ".. pp; paspros3p = "] ".. pp
	    --trapassato prossimo (pretérito pluscuamperfecto)
	    	trappros1s = "] ".. pp; trappros2s = "] ".. pp; trappros3s = "] ".. pp
	    	trappros1p = "] ".. pp; trappros2p = "] ".. pp; trappros3p = "] ".. pp
	    --trapassato remoto (pretérito anterior)
			traprem1s = "] ".. pp; traprem2s = "] ".. pp; traprem3s = "] ".. pp
	    	traprem1p = "] ".. pp; traprem2p = "] ".. pp; traprem3p = "] ".. pp
	   --futuro anteriore (futuro compuesto)
			futant1s = "] ".. pp; futant2s = "] ".. pp; futant3s = "] ".. pp
	    	futant1p = "] ".. pp; futant2p = "] ".. pp; futant3p = "] ".. pp    	
	    --condizionale passato (potencial compuesto)
			condpas1s = "] ".. pp; condpas2s = "] ".. pp; condpas3s = "] ".. pp
	    	condpas1p = "] ".. pp; condpas2p = "] ".. pp; condpas3p = "] ".. pp  
	--congiuntivo passato (subjunctivo pretérito perfecto)
			congpas1s = "] ".. pp; congpas2s = "] ".. pp; congpas2sform = "]".. pp; congpas3s = "] ".. pp
	    	congpas1p = "] ".. pp; congpas2p = "] ".. pp; congpas3p = "] ".. pp     
	--congiuntivo trapassato (subjunctivo pretérito pluscuamperfecto)
			congtrap1s = "]/] ".. pp; congtrap2s = "]/] ".. pp; congtrap3s = "]/] ".. pp
	    	congtrap1p = "]/] ".. pp; congtrap2p = "]/] ".. pp; congtrap3p = "]/] ".. pp 
	--congiuntivo futuro anteriore (subjunctivo futuro compuesto)
			congfutant1s = "] ".. pp; congfutant2s = "] ".. pp; congfutant3s = "] ".. pp
	    	congfutant1p = "] ".. pp; congfutant2p = "] ".. pp; congfutant3p = "] ".. pp     
		end
		
-- Genera i titolo dei cassetti per i tempi composti
    if pp == "" then
    	paspros = "manca dei tempi composti"; trappros = "manca dei tempi composti"; traprem = "manca dei tempi composti"; futant = "manca dei tempi composti"; condpas = "manca dei tempi composti"; congpas = "manca dei tempi composti"; congtrap = "manca dei tempi composti"; congfutant = "manca dei tempi composti"
    else
    	paspros = "ausiliare ''" .. ausiliare .. "'' coniugato all'indicativo presente seguito dal participio passato"
    	trappros = "ausiliare ''" .. ausiliare .. "'' coniugato all'indicativo imperfetto seguito dal participio passato"
    	traprem = "ausiliare ''" .. ausiliare .. "'' coniugato all'indicativo passato remoto seguito dal participio passato"
    	futant = "ausiliare ''" .. ausiliare .. "'' coniugato all'indicativo futuro seguito dal participio passato"
    	condpas = "ausiliare ''" .. ausiliare .. "'' coniugato al condizionale presente seguito dal participio passato"
    	congpas = "ausiliare ''" .. ausiliare .. "'' coniugato al congiuntivo presente seguito dal participio passato"
    	congtrap = "ausiliare ''" .. ausiliare .. "'' coniugato al congiuntivo imperfetto seguito dal participio passato"
    	congfutant = "ausiliare ''" .. ausiliare .. "'' coniugato al congiuntivo futuro seguito dal participio passato"
    end
    
-- Costruisce la tabella di coniugazione
    conj = '{| style="background:#F0F0F0;border-collapse:separate;border-spacing:2px" class="inflection-table"\n'
    conj = conj .. '|-\n'
    conj = conj .. '| colspan="8" style="background:#ffe4c4; text-align:center" | ' .. descrizione .. '\n'
    conj = conj .. '|-\n'     
    if refl_exist == true then --se esiste il riflessivo pronominale del verbo, o se il verbo È riflessivo, fa spazio in tabella per aggiungere i relativi link generati precedentemente
    	conj = conj .. '! colspan="1" style="background:#e2e4c0" | infinito\n'
    	conj = conj .. '| colspan="2" | ' .. inf .. '\n'
    		if refl == true then --ulteriore variabile, se il verbo è riflessivo la dicitura della casella è "forma attiva", se no "riflessivo pronominale"
    			conj = conj .. '! colspan="2" style="background:#e2e4c0" | foma attiva\n' 
    		else
    			conj = conj .. '! colspan="2" style="background:#e2e4c0" | riflessivo pronominale\n'
    		end
    	conj = conj .. '| colspan="2" | ' .. refl_link .. refl_conjlink.. '\n'
    	conj = conj .. '|-\n'
    else --se non esiste il riflessivo, la relativa cella si toglie di torno
		conj = conj .. '! colspan="1" style="background:#e2e4c0" | infinito</br><small>infinitivo</small>\n'
    	conj = conj .. '| colspan="1" | ' .. inf .. '\n'
    	conj = conj .. '|-\n'
    end
    conj = conj .. '! colspan="1" style="background:#e2e4c0" | gerundio</br><small>gerundio</small>\n'
    conj = conj .. '| colspan="3" | ' .. ger .. '\n'
    conj = conj .. '|-\n' 
    conj = conj .. '! colspan="1" style="background:#e2e4c0" | participio passato</br><small>participio</small>\n'
    conj = conj .. '| colspan="3" | ' .. pp .. '\n'
    conj = conj .. '|-\n'
    conj = conj .. '|-\n! colspan="1" rowspan="2" style="background:#C0C0C0" | persona\n'
    conj = conj .. '! colspan="3" style="background:#C0C0C0" | singolare\n'
    conj = conj .. '! colspan="3" style="background:#C0C0C0" | plurale\n'
    conj = conj .. '|-\n! style="background:#C0C0C0;width:12.5%" | prima\n'
    conj = conj .. '! style="background:#C0C0C0;width:12.5%" | seconda\n'
    conj = conj .. '! style="background:#C0C0C0;width:12.5%" | terza\n'
    conj = conj .. '! style="background:#C0C0C0;width:12.5%" | prima\n'
    conj = conj .. '! style="background:#C0C0C0;width:12.5%" | seconda\n'
    conj = conj .. '! style="background:#C0C0C0;width:12.5%" | terza\n'
    conj = conj .. '|-\n! style="background:#c0cfe4" colspan="1" | indicativo</br><small>indicativo</small>\n'
    conj = conj .. '! style="background:#c0cfe4" | yo\n'
    conj = conj .. '! style="background:#c0cfe4" | tú</br>vos\n'
    conj = conj .. '! style="background:#c0cfe4" | él/ella</br>usted\n'
    conj = conj .. '! style="background:#c0cfe4" | nosotros</br>nosotras\n'
    conj = conj .. '! style="background:#c0cfe4" | vosotros</br>vosotras\n'
    conj = conj .. '! style="background:#c0cfe4" | ellos/ellas</br>ustedes\n|-\n'
    conj = conj .. '! style="height:3em;background:#c0cfe4" colspan="1" | presente</br><small>presente</small>\n'
    conj = conj .. '|' .. me .. pres1s .. '\n|' .. te .. pres2s .." <sup><small>tú</small></sup></br>".. te .. pres2sform .." <sup><small>vos</small></sup>".. '\n|' .. se .. pres3s .. '\n|' .. nos .. pres1p .. '\n|' .. os .. pres2p .. '\n|' .. se .. pres3p .. '\n'
    conj = conj .. '|-\n! style="height:3em;background:#c0cfe4" colspan="1" | imperfetto</br><small>pretérito imperfecto o copretérito</small>\n'
    conj = conj .. '|' .. me .. imperf1s .. '\n|' .. te .. imperf2s .. '\n|' .. se .. imperf3s .. '\n|' .. nos .. imperf1p .. '\n|' .. os .. imperf2p .. '\n|' .. se .. imperf3p .. '\n'
    conj = conj .. '|-\n! style="height:3em;background:#c0cfe4" colspan="1" | preterito</br><small>pretérito indefinito</small>\n'
    conj = conj .. '|' .. me .. prem1s .. '\n|' .. te .. prem2s .. '\n|' .. se .. prem3s .. '\n|' .. nos .. prem1p .. '\n|' .. os .. prem2p .. '\n|' .. se .. prem3p .. '\n'
    conj = conj .. '|-\n! style="height:3em;background:#c0cfe4" colspan="1" | futuro</br><small>futuro</small>\n'
    conj = conj .. '|' .. me .. fut1s .. '\n|' .. te .. fut2s .. '\n|' .. se .. fut3s .. '\n|' .. nos .. fut1p .. '\n|' .. os .. fut2p .. '\n|' .. se .. fut3p .. '\n'
    conj = conj .. '|-\n! style="height:3em;background:#c0cfe4" colspan="1" | condizionale</br><small>potencial o condicional</small>\n'
    conj = conj .. '|' .. me .. cond1s .. '\n|' .. te .. cond2s .. '\n|' .. se .. cond3s .. '\n|' .. nos .. cond1p .. '\n|' .. os .. cond2p .. '\n|' .. se .. cond3p .. '\n'
    conj = conj .. '|-\n! style="height:3em;background:#c0cfe4" colspan="1" | passato prossimo</br><small>pretérito perfecto o antepresente</small>\n'
    conj = conj .. '| style="background:#F0F0F0" colspan="6" | <div class="NavFrame" style="border:0"><div class="NavHead">'.. paspros.. '</div><div class="NavContent">\n {| style="background:#F0F0F0;border-collapse:separate;border-spacing:2px;width:100%" class="inflection-table" \n |- \n | ' .. me .. paspros1s .. '||' .. te .. paspros2s .. '||' .. se .. paspros3s .. '||' .. nos .. paspros1p .. '||' .. os .. paspros2p .. '\n|' .. se .. paspros3p .. '\n |- \n |}</div></div>\n'
    conj = conj .. '|-\n! style="height:3em;background:#c0cfe4" colspan="1" | trapassato prossimo</br><small>pretérito pluscuamperfecto o antecopretérito</small>\n'
    conj = conj .. '| style="background:#F0F0F0" colspan="6" | <div class="NavFrame" style="border:0"><div class="NavHead">'.. trappros.. '</div><div class="NavContent">\n {| style="background:#F0F0F0;border-collapse:separate;border-spacing:2px;width:100%" class="inflection-table" \n |- \n | ' .. me .. trappros1s .. '\n|' .. te .. trappros2s .. '\n|' .. se .. trappros3s .. '\n|' .. nos .. trappros1p .. '\n|' .. os .. trappros2p .. '\n|' .. se .. trappros3p .. '\n |- \n |}</div></div>\n'
    conj = conj .. '|-\n! style="height:3em;background:#c0cfe4" colspan="1" | trapassato remoto</br><small>pretérito anterior o antepréterito</small>\n'
    conj = conj .. '| style="background:#F0F0F0" colspan="6" | <div class="NavFrame" style="border:0"><div class="NavHead">'.. traprem.. '</div><div class="NavContent">\n {| style="background:#F0F0F0;border-collapse:separate;border-spacing:2px;width:100%" class="inflection-table" \n |- \n | ' .. me .. traprem1s .. '\n|' .. te .. traprem2s .. '\n|' .. se .. traprem3s .. '\n|' .. nos .. traprem1p .. '\n|' .. os .. traprem2p .. '\n|' .. se .. traprem3p .. '\n |- \n |}</div></div>\n'
    conj = conj .. '|-\n! style="height:3em;background:#c0cfe4" colspan="1" | futuro anteriore</br><small>futuro compuesto o perfecto</small>\n'
    conj = conj .. '| style="background:#F0F0F0" colspan="6" | <div class="NavFrame" style="border:0"><div class="NavHead">'.. futant.. '</div><div class="NavContent">\n {| style="background:#F0F0F0;border-collapse:separate;border-spacing:2px;width:100%" class="inflection-table" \n |- \n | ' .. me .. futant1s .. '\n|' .. te .. futant2s .. '\n|' .. se .. futant3s .. '\n|' .. nos .. futant1p .. '\n|' .. os .. futant2p .. '\n|' .. se .. futant3p .. '\n |- \n |}</div></div>\n'
    conj = conj .. '|-\n! style="height:3em;background:#c0cfe4" colspan="1" | condizionale passato</br><small>potencial o condicional compuesto</small>\n'
    conj = conj .. '| style="background:#F0F0F0" colspan="6" | <div class="NavFrame" style="border:0"><div class="NavHead">'.. condpas.. '</div><div class="NavContent">\n {| style="background:#F0F0F0;border-collapse:separate;border-spacing:2px;width:100%" class="inflection-table" \n |- \n | ' .. me .. condpas1s .. '\n|' .. te .. condpas2s .. '\n|' .. se .. condpas3s .. '\n|' .. nos .. condpas1p .. '\n|' .. os .. condpas2p .. '\n|' .. se .. condpas3p .. '\n |- \n |}</div></div>\n'
    conj = conj .. '|-\n! style="background:#c0e4c0" colspan="1" | congiuntivo</br><small>subjuntivo</small>\n'
    conj = conj .. '! style="background:#c0e4c0" | yo\n'
    conj = conj .. '! style="background:#c0e4c0" | tú</br>vos\n'
    conj = conj .. '! style="background:#c0e4c0" | él/ella</br>usted\n'
    conj = conj .. '! style="background:#c0e4c0" | nosotros</br>nosotras\n'
    conj = conj .. '! style="background:#c0e4c0" | vosotros</br>vosotras\n'
    conj = conj .. '! style="background:#c0e4c0" | ellos/ellas</br>ustedes\n|-\n'
    conj = conj .. '! style="height:3em;background:#c0e4c0" | presente</br><small>presente</small>\n'
    conj = conj .. '|' .. me .. cong1s .. '\n|' .. te .. cong2s .." <sup><small>tú</small></sup></br>".. te .. cong2sform .." <sup><small>vos</small></sup>".. '\n|' .. se .. cong3s .. '\n|' .. nos .. cong1p .. '\n|' .. os .. cong2p .. '\n|' .. se .. cong3p .. '\n'   
    conj = conj .. '|-\n! style="height:3em;background:#c0e4c0" rowspan="2" | imperfetto</br><small>imperfecto o copretérito</small>\n'
    conj = conj .. '|' .. me .. congimp1s_ra .. '\n|' .. te .. congimp2s_ra .. '\n|' .. se .. congimp3s_ra .. '\n|' .. nos .. congimp1p_ra .. '\n|' .. os .. congimp2p_ra .. '\n|' .. se .. congimp3p_ra .. '\n|-\n'
    conj = conj .. '|' .. me .. congimp1s_se .. '\n|' .. te .. congimp2s_se .. '\n|' .. se .. congimp3s_se .. '\n|' .. nos .. congimp1p_se .. '\n|' .. os .. congimp2p_se .. '\n|' .. se .. congimp3p_se .. '\n' 
    conj = conj .. '|-\n! style="height:3em;background:#c0e4c0" rowspan="1" | futuro</br><small>futuro</small>\n'
    conj = conj .. '|' .. me .. congfut1s .. '\n|' .. te .. congfut2s .. '\n|' .. se .. congfut3s .. '\n|' .. nos .. congfut1p .. '\n|' .. os .. congfut2p .. '\n|' .. se .. congfut3p .. '\n' 
    conj = conj .. '|-\n! style="height:3em;background:#c0e4c0" colspan="1" | passato</br><small>perfecto</small>\n'
    conj = conj .. '| style="background:#F0F0F0" colspan="6" | <div class="NavFrame" style="border:0"><div class="NavHead">'.. congpas.. '</div><div class="NavContent">\n {| style="background:#F0F0F0;border-collapse:separate;border-spacing:2px;width:100%" class="inflection-table" \n |- \n | ' .. me .. congpas1s .. '\n|' .. te .. congpas2s .. '\n|' .. se .. congpas3s .. '\n|' .. nos .. congpas1p .. '\n|' .. os .. congpas2p .. '\n|' .. se .. congpas3p .. '\n |- \n |}</div></div>\n'   
    conj = conj .. '|-\n! style="height:3em;background:#c0e4c0" colspan="1" | trapassato</br><small>pluscuamperfecto</small>\n'
    conj = conj .. '| style="background:#F0F0F0" colspan="6" | <div class="NavFrame" style="border:0"><div class="NavHead">'.. congtrap.. '</div><div class="NavContent">\n {| style="background:#F0F0F0;border-collapse:separate;border-spacing:2px;width:100%" class="inflection-table" \n |- \n | ' .. me .. congtrap1s .. '\n|' .. te .. congtrap2s .. '\n|' .. se .. congtrap3s .. '\n|' .. nos .. congtrap1p .. '\n|' .. os .. congtrap2p .. '\n|' .. se .. congtrap3p .. '\n |- \n |}</div></div>\n' 
    conj = conj .. '|-\n! style="height:3em;background:#c0e4c0" colspan="1" | futuro compuesto o perfecto</br><small>pluscuamperfecto</small>\n'
    conj = conj .. '| style="background:#F0F0F0" colspan="6" | <div class="NavFrame" style="border:0"><div class="NavHead">'.. congfutant.. '</div><div class="NavContent">\n {| style="background:#F0F0F0;border-collapse:separate;border-spacing:2px;width:100%" class="inflection-table" \n |- \n | ' .. me .. congfutant1s .. '\n|' .. te .. congfutant2s .. '\n|' .. se .. congfutant3s .. '\n|' .. nos .. congfutant1p .. '\n|' .. os .. congfutant2p .. '\n|' .. se .. congfutant3p .. '\n |- \n |}</div></div>\n'
    conj = conj .. '|-\n! colspan="1" rowspan="2" style="height:3em;background:#e4d4c0" | imperativo</br><small>imperativo</small>\n'
    conj = conj .. '! style="background:#e4d4c0" | yo\n'
    conj = conj .. '! style="background:#e4d4c0" | tú</br>vos\n'
    conj = conj .. '! style="background:#e4d4c0" | él/ella</br>usted\n'
    conj = conj .. '! style="background:#e4d4c0" | nosotros</br>nosotras\n'
    conj = conj .. '! style="background:#e4d4c0" | vosotros</br>vosotras\n'
    conj = conj .. '! style="background:#e4d4c0" | ellos/ellas</br>ustedes\n|-\n'
    conj = conj .. '|-\n|\n'
    conj = conj .. '|' .. imp2s.." <sup><small>tú</small></sup></br>".. imp2sform .." <sup><small>vos</small></sup>"..  '\n|' .. imp3s .. '\n|' .. imp1p .. '\n|' .. imp2p .. '\n|' .. imp3p .. '\n'
    conj = conj .. '|-\n'    
    conj = conj .. '|}'
    return conj 
end

function p.over(x,over,xtra)
-- Utilizzato all'interno della funzione esconj
-- Rimpiazza una voce verbale standard con quella eventualmente indicata nel template (se quest'ultimo è un link rosso, aggiunge anche la relativa categoria)
    if over == nil then return x end
    if over < "a" then return '' end
    if xtra == 0 then return over .. " " end -- for reflexive pronouns
	if over >= "a" and mw.title.new(over).exists == false then 
		RedCat = categorizza("Verbi spagnoli con forme da scrivere", titolo)
	else
		RedCat = ""
		end
	if RedCat > "0" then
		return RedCat.. " ]"
	else
		return "]"
	end
end

function p.wiki(x)
-- Utilizzato all'interno della funzione esconj
    if x == nil then return " " end
    if x == "" then return " " end
    -- aggiunge la categoria link rossi
    if x == (radice.. "ar") or x == (radice.. "er") or x == (radice.. "ir") then --per la voce all'infinito
    	if x >= "a" and mw.title.new(x).exists == false then
    	RedCat = categorizza("Verbi spagnoli da scrivere", titolo)
        else
    	RedCat = ""
    	end
    else --per tutte le altre
    	if x >= "a" and mw.title.new(x).exists == false then
    	RedCat = categorizza("Verbi spagnoli con forme da scrivere", titolo)
        else
    	RedCat = ""
    	end
	end
-- Rende il suo argomento un wikilink, o lo rende nullo se non definito (per facilitare la concatenazione)
    if RedCat > "0" then
    	return RedCat.. " ]"
    else
    	return "]"
    end
end

function p.alts(x,y)
-- Utilizzato all'interno della funzione esconj
-- Aggiunge le eventuali forme alternative, se specificate nel template, separandole da quelle base con una virgola
	if y == nil then return x end
	if y == '' then return x end
    if y > "0" then return x .. ", " .. y end
    return x
end

function p.plurale(pos, str, r)
-- Utilizzato all'interno della funzione esconj
--genera automaticamente il plurale del participio passato
    return str:sub(1, pos-1) .. r
end

return p