Esta é a páxina de documentación de «Módulo:Argumentos»

Obxectivo

editar

Este módulo serve para procesar os argumentos que se lle pasan dende un #invoke. É un meta-módulo, debe usarse dende outros módulos e non se debe chamar directamente. O código deste módulo procede do orixinal na Wikipedia en inglés en:Module:Arguments. As súas funcións inclúen:

  • Eliminación de espazos nos valores dos argumentos e borrado de argumentos en branco.
  • Paso de argumentos tanto polo frame actual como polo frame pai ó mesmo tempo.
  • Paso directo de argumentos dende outro módulo Lua ou dende a consola de depuración de erros.
  • Permite obter os argumentos segundo se precisen, o que pode axudar a evitar (algúns) problemas coas etiquetas <ref>...</ref>.
  • A maioría das funcionalidades poden personalizarse.

Primeiro precísase cargar o módulo. Este contén unha función, chamada getArgs.

local getArgs = require('Módulo:Argumentos').getArgs

No escenario máis básico, pode usarse getArgs dentro da función principal. A variable args é unha táboa que contén os argumentos de #invoke.

local getArgs = require('Módulo:Argumentos').getArgs
local p = {}

function p.main(frame)
	local args = getArgs(frame)
	-- O código do módulo principal vai aquí.
end

return p

Porén, a práctica recomendada é usar a función só para procesar argumentos de #invoke. Isto significa que se alguén chama ó módulo dende outro módulo Lua, non é necesario ter un obxecto frame dispoñible, mellorando así o rendemento do módulo.

local getArgs = require('Módulo:Argumentos').getArgs
local p = {}

function p.main(frame)
	local args = getArgs(frame)
	return p._main(args)
end

function p._main(args)
	-- O código do módulo principal vai aquí.
end

return p

Para usar os argumentos desde varias funcións, e que estean accesibles dende #invoke, pode usarse unha función envoltorio.

local getArgs = require('Módulo:Argumentos').getArgs

local function makeInvokeFunc(funcName)
	return function (frame)
		local args = getArgs(frame)
		return p[funcName](args)
	end
end

local p = {}

p.func1 = makeInvokeFunc('_func1')

function p._func1(args)
	-- O código da primeira función vai aquí.
end

p.func2 = makeInvokeFunc('_func2')

function p._func2(args)
	-- O código da segunda función vai aquí.
end

return p

Opcións

editar

Poden usarse as seguintes opcións.

local args = getArgs(frame, {
	trim = false,
	removeBlanks = false,
	valueFunc = function (key, value)
		-- Código para procesar un argumento
	end,
	frameOnly = true,
	parentOnly = true,
	parentFirst = true,
	wrappers = {
		'Modelo:Modelo envoltorio',
		'Modelo:Modelo envoltorio 2'
	},
	readOnly = true,
	noOverwrite = true
})

Limitacións coñecidas

editar

O uso de metatáboas ten tamén os seus problemas. A maioría das ferramentas normais de táboa de Lua non funcionan correctamente sobre a táboa de argumentos, incluíndo o operador #, a función next(), e as funcións na biblioteca de funcións de táboas. Se un módulo precisa usalas, debería usar a súa propia función de procesado de argumentos no canto deste módulo.

Véxase tamén

editar