Modulo:Es-verb

Hello, you have come here looking for the meaning of the word Modulo:Es-verb. In DICTIOUS you will not only get to know all the dictionary meanings for the word Modulo:Es-verb, but we will also tell you about its etymology, its characteristics and you will know how to say Modulo:Es-verb in singular and plural. Everything you need to know about the word Modulo:Es-verb you have here. The definition of the word Modulo:Es-verb will help you to be more precise and correct when speaking or writing your texts. Knowing the definition ofModulo:Es-verb, 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-verb/man

-- Questo modulo contiene il codice per il template:Es-verb, che genera il paradigma con le forme base dei verbi spagnoli e potenzialmente ne permette la categorizzazzione per coniugazione

p = {}

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

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

function p.esverb(frame)
	pframe = frame:getParent()
    args = pframe.args

--inizializza tutte le stringhe come vuote, per facilitare la concatenazione
	sort = ""; rifl = ""; radice = ""; me = ""; se = ""
	conj = ""; conjdescr = ""; conjcat = ""; riflcat = ""
	pres1s = ""; pres1s2 = ""; prem1s = ""; prem1s2 = ""
	pp = ""; pp2 = ""; pp3 = ""; pp4 = ""; pp5 = ""
	riflink = ""; paradigma = ""; descrizione = ""
    
	titolo = mw.title.getCurrentTitle().text --il titolo della pagina (che dovrebbe corrispondere al verbo all'infinito)

--per prima cosa definisce la coniugazione; questo può avvenire con un parametro apposito oppure in automatico
	if args ~= nil then --se è definito il parametro "conj" del template, la coniugazione è recuperata in base ad esso
		if args == "1" then sort = "1"
		elseif args == "2" then sort = "2"
		elseif args == "3" then sort = "3"
		else error(" parametro 'conj' non ammesso! può essere solo '''1''', '''2''' o '''3''' (per prima, seconda o terza coniugazione)")
		end
	else --se il parametro "conj" del template non è definito, la coniugazione è recuperata in automatico in base alla terminazione dell'infinito
		if mw.ustring.sub(titolo, -2) == "ar" or mw.ustring.sub(titolo, -4) == "arse" then sort = "1"
		elseif mw.ustring.sub(titolo, -2) == "er" or mw.ustring.sub(titolo, -4) == "erse" then sort = "2"
		elseif mw.ustring.sub(titolo, -2) == "ir" or mw.ustring.sub(titolo, -4) == "irse" then sort = "3"
		else error(" terminazione del verbo non riconosciuta!")
		end
	end

--verifica se il verbo è riflessivo, ovvero se termina con la particella pronominale "se"
	if mw.ustring.sub(titolo, -2) == "se" then rifl = true else rifl = false end
	
--genera la radice del verbo, eliminando l'uscita all'infinito
	if rifl == false then radice = mw.ustring.sub(titolo, 1, -3)
	elseif rifl == true then radice = mw.ustring.sub(titolo, 1, -5)
	end

--genera le particelle pronominali se il verbo è riflessivo
	if rifl == true then
		me = "] "
	end
	
--genera la descrizione (e potenzialmente la categoria) della coniugazione
	if sort == "1" then conj = "prima coniugazione"; conjdescr = "1<sup><small>a</small></sup> coniugazione"
	elseif sort == "2" then conj = "seconda coniugazione"; conjdescr = "2<sup><small>a</small></sup> coniugazione"
	elseif sort == "3" then conj = "terza coniugazione"; conjdescr = "3<sup><small>a</small></sup> coniugazione"
	end
	
--genera le categorie, per ora solo --commentate
	--conjcat = "categorizza("Verbi in spagnolo", titolo).. categorizza("Verbi di ".. conj.. " in spagnolo", titolo)"
	--if rifl == true then
		--riflcat = categorizza("Verbi riflessivi in spagnolo", titolo).. categorizza("Verbi riflessivi di ".. conj.. " in spagnolo", titolo)
	--else
		--riflcat = ""
	--end
		
--genera le forme flesse del paradigma
	if sort == "1" then
		pres1s = me.. p.wiki(radice.. "o"); prem1s = me.. p.wiki(radice.. "é"); pp = p.wiki(radice.. "ado")
	elseif sort == "2" or sort == "3" then
		pres1s = me.. p.wiki(radice.. "o"); prem1s = me.. p.wiki(radice.. "í"); pp = p.wiki(radice.. "ido")
	end
	
-- Recupera le eventuali forme irregolari o varianti, rimpiazziandole o aggiungendole a quelle standard
	pres1s = p.over(pres1s,args); pres1s2 = p.wiki(args)
	pres1s = p.alts(pres1s, pres1s2)
	prem1s = p.over(prem1s,args); prem1s2 = p.wiki(args)
	prem1s = p.alts(prem1s, prem1s2)
	pp = p.over(pp,args); pp2 = 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)

--genera il link al riflessivo, se questo esiste (e se il verbo non è riflessivo)
	if rifl == false then
		if mw.title.new(titolo.. "se").exists == true then
			riflink = "; ''riflessivo'': '''".. p.wiki(titolo.."se").. "'''"
		end
	end
	
--genera il paradigma, inserendo tra parentesi le voci verbali generate prima
	paradigma = "(''prima pers. sing. dell'indicativo presente'': '''".. pres1s.. "''', ''prima pers. sing. dell'indicativo preterito'': '''".. prem1s.. "''', ''participio passato'': '''".. pp.. "'''".. riflink.. ")"
	
--infine, mette insieme tutte le variabili generate fin qui nella stringa "descrizione", che costituisce l'output del modulo
	descrizione = conjdescr.. " ".. paradigma --.. conjcat.. riflcat
	
	return descrizione 
end

function p.over(x,over)
-- Utilizzato all'interno della funzione esverb
-- 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 'n.e.' end
	if over >= "a" then
		return "]"
	else 
		return "n.e."
	end
end

function p.wiki(x)
-- Utilizzato all'interno della funzione esverb
    if x == nil then return " " end
    if x == "" then return " " end
-- Rende il suo argomento un wikilink, o lo rende nullo se non definito (per facilitare la concatenazione)
    	return "]"
end

function p.alts(x,y)
-- Utilizzato all'interno della funzione esverb
-- 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 .. " ''o'' " .. y end
    return x
end

return p