Módulo:Argumentos/uso
Esta é a páxina de documentación de «Módulo:Argumentos»
Esta é a subpáxina de documentación de "Módulo:Argumentos". Contén información de uso, categorías e outros contidos que non forman parte do modelo orixinal. Atención: As ligazóns interwiki engádense no Wikidata. |
Este módulo emprégase en máis de 33 000 páxinas. Para evitar problemas en moitas páxinas e carga innecesaria nos servidores, calquera cambio neste módulo debería probarse primeiro na súa sub-páxina de /probas e seguidamente engadirse na páxina principal nunha soa edición. |
Obxectivo
editarEste 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.
Uso
editarPrimeiro 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
editarPoden 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
editarO 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