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

Este módulo proporciona un procesado sinxelo dos argumentos pasados dende #invoke. É un meta-módulo, é dicir que debe ser usado por outros módulos, e non debe ser chamado directamente. As súas funcións inclúen:

  • Eliminación sinxela de espazos dos argumentos e borrado de argumentos en branco.
  • Os argumentos poden ser pasados tanto polo frame actual como polo frame pai ó mesmo tempo. (Máis detalles abaixo.)
  • Os argumentos poden ser pasados directamente dende outro módulo Lua ou dende a consola de depuración de erros.
  • Os argumentos poden ser buscados cando se precisan, o que pode axudar a evitar (algúns) problemas coas etiquetas ref
  • Máis funcionalidades poden ser personalizadas.

Uso básico

editar

Primeiro, vostede precisa 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, vostede pode usar getArgs dentro da súa función principal. A variable args é unha táboa que contén os argumentos de #invoke. (Mirar abaixo para máis detalles.)

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

Pola contra, a práctica recomendada é usar a función só para procesar argumentos de #invoke. Isto significa que se alguén chama ó seu módulo dende outro módulo Lua vostede non ten que ter un obxecto frame dispoñible, o que mellora o rendemento.

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

Se vostede quere que varias funcións usen os argumentos, e tamén quere que estean accesibles dende #invoke, pode usar unha función para envolvelos.

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

Limitacións coñecidas

editar

O uso de metatáboas ten tamén os seus problemas. A maioría das ferramentas de táboas de Lua normais non funcionan correctamente coa 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 o seu módulo precisa usalas, vostede debe usar a súa propia función de procesado de argumentos no canto deste módulo.