Mòdul:Paràmetres

De Viquipèdia
Salta a la navegació Salta a la cerca
Icona de documentació de mòdul Documentació del mòdul [ mostra ] [ modifica el codi ] [ mostra l'historial ] [ refresca ]

Mòdul Paràmetres (codi · ús · discussió · proves · tests · casos prova | subpàgines · enllaços)

A continuació es mostra la documentació transclosa de la subpàgina /ús. [salta a la caixa de codi]


Aquest mòdul està pensat per ajudar a assegurar la compatibilitat entre plantilles, sobretot en casos quan una plantilla s'actualitza al cap d'uns anys i cal que funcioni tant amb el nou plantejament com amb l'original.

A continuació es detalla el funcionament de les funcions disponibles.

Funcions[modifica]

extreuNomArxiu[modifica]

La funció extreuNomArxiu serveix per extreure el nom d'un arxiu en el cas que l'usuari hagi entrat el paràmetre de la forma [[Fitxer:Nom arxiu.jpg|250px]] i no directament de la forma Nom arxiu.jpg. És especialment útil per adaptar plantilles a nous formats i assegurar compatibilitats amb versions anteriors. Sintaxi:

{{#invoke:paràmetres|extreuNomArxiu|cadena}}

extreuCometesSimples[modifica]

Ídem que l'anterior, però extreu les cometes simples (tantes com n'hi hagi) d'una cadena de text. Sintaxi:

{{#invoke:paràmetres|extreuCometesSimples|cadena}}

separaObraAny[modifica]

Serveix pels camps "precedit per" i "seguit per" d'infotaules com ara {{Infotaula de llibre}}. Bàsicament el que fa és donar format homogeni a l'obra (que ha d'anar en cursiva) i l'any (que no hi ha d'anar), independentment de com ho entri l'usuari.

{{#invoke:paràmetres|separaObraAny|cadena}}

Per exemple:

  • {{#invoke:paràmetres|separaObraAny|[[Els cigars del faraó]] ''([[1937]])'}}
  • Els cigars del faraó (1937)

Amb un primer paràmetre addicional "sí" s'indica que es vol un salt de línia entre obra i any. Amb un segon paràmetre addicional "sí" s'indica que es vol el nom de l'obra en negreta. Amb un tercer paràmetre addicional "sí" s'indica que en comptes de cursiva es volen cometes baixes.

numPara[modifica]

Compta el número de paràmetres passats amb una plantilla, per exemple {{count}} o {{llista aleatòria}}. Sintaxi:

{{#invoke:paràmetres|numPara}}

Amb la sintaxi {{#invoke:paràmetres|numPara|buits=no}} no compta els paràmetres buits o en blanc.

--[[  
Aquest mòdul està pensat per ajudar a assegurar la compatibilitat entre plantilles, sobretot en casos
quan una plantilla s'actualitza al cap d'uns anys i cal que funcioni tant amb el nou 
plantejament com amb l'original.
]]

local p = {}

--[[ extreuNomArxiu

Paràmetres
  1: cadena de text de la qual s'ha d'extreure el nom d'arxiu
]]

function p.extreuNomArxiu(frame)
	local arg = frame.args[1] or "" -- per evitar nil
	return mw.ustring.match(arg, ":(.+%.%a+)") or arg
end

--[[ extreuCometesSimples

Paràmetres
  1: cadena de text de la qual s'ha d'extreure les cometes dobres de curvisa o triples de negreta
]]

function p.extreuCometesSimples(frame)
	local arg = frame.args[1] or "" -- per evitar nil
	return mw.ustring.gsub(arg, "^'+(.-)'+$", "%1") or arg
end

--[[ separaObraAny

Paràmetres
  1: cadena de text de la qual s'ha de separar l'obra i l'any, i posar cometes a l'obra
]]

function p.separaObraAny(frame)
	local arg = frame.args[1] or "" -- per evitar nil
	local salt = frame.args[2] or "" -- per evitar nil
	local negreta = frame.args[3] or "" -- per evitar nil
	local baixes = frame.args[4] or "" -- per evitar nil
	arg =  mw.ustring.gsub(arg, "<br( -)/->", " ") or arg --[[treu salts]]
	any = mw.ustring.match(arg, "%d+") or ""
	any = mw.ustring.gsub(any, "^'+(.-)'+$", "%1") or any --[[treu cometes]]
	text = mw.ustring.match(arg, "(.*) .*%(") or ""
	text = mw.ustring.gsub(text, "^\"+(.-)\"+$", "%1") or text --[[treu cometes dobles]]
	text = mw.ustring.gsub(text, "^'+(.-)'+$", "%1") or text --[[treu cometes]]
	text = mw.ustring.gsub(text, "^\"+(.-)\"+$", "%1") or text --[[treu cometes dobles]]
	text = mw.ustring.gsub(text, "^«+(.-)»+$", "%1") or text --[[treu cometes baixes]]
	if negreta=="sí" then
		text = "'''"..text.."'''"
	end
	if baixes == "sí" then
		text="«"..text.."»"
	else
		text="''"..text.."''"
	end
	if any~="" then
		if text~="" then
			if salt=="sí" then
				final=text.."<br />("..any..")"
			else
				final=text.." ("..any..")"
			end
		end
	else
		text = mw.ustring.match(arg, "(.*)") or ""
		text = mw.ustring.gsub(text, "^\"+(.-)\"+$", "%1") or text --[[treu cometes dobles]]
		text = mw.ustring.gsub(text, "^'+(.-)'+$", "%1") or text --[[treu cometes]]	
		text = mw.ustring.gsub(text, "^\"+(.-)\"+$", "%1") or text --[[treu cometes dobles]]
		text = mw.ustring.gsub(text, "^«+(.-)»+$", "%1") or text --[[treu cometes baixes]]
		if text~="" then
			if negreta=="sí" then
				text = "'''"..text.."'''"
			end		
			if baixes == "sí" then
				text="«"..text.."»"
			else
				text="''"..text.."''"
			end
		end
		final=text
	end
	return final or "Error"
end

--[[ numPara

Compta el número de paràmetres, passats pel frame superior;
a notar que #frame.args no funciona per ser una metataula
]]

function p.numPara( frame )
	local args = frame.args
	local pargs = frame:getParent().args
	local nobuit = args.buits == "no"
	local comptaArgs = 0
	if pargs == nil then return 0 end
	for _, val in pairs(pargs) do
		if not (nobuit and mw.text.trim(val) == "") then
			comptaArgs = comptaArgs + 1
		end
	end
	return comptaArgs
end

return p