La documentación para este módulo puede ser creada en Módulo:Argumentos/doc
local z = {} function z.obtenerArgumentos(frame) if frame.args[1] then return frame.args end return frame:getParent().args end function z.obtenerArgumentosConValor(frame) if frame == mw.getCurrentFrame() then argumentos = frame:getParent().args else argumentos = frame.args or frame end return require('Módulo:Tablas').copiarElementosConValor(argumentos) end -- Obtiene os argumentos con valors d\'a plantilla en minúsclas y con as -- tildes sacadas, en caso de que'n tienga de forma que siga más sencillo -- treballar con as distintas variants en os módulos. -- -- Nota: En caso de que i haiga parametros duplicaus dimpués d\'a normalización nomás -- se mantendrá a zaguera valor procesada por a función. -- -- Parametros de dentrada: -- frame: O marco emplegau por o módulo -- -- Parametros de salida: -- argumentosNormalizaus: os argumentos con valor y nombre normalizau -- argumentosDuplicaus: si a plantilla tien quantas vegadas o mesmo -- argumento dimpués d\'a normalización u no function z.obtenerArgumentosConValorNormalizaus(frame) local argumentos = z.obtenerArgumentosConValor(frame) local argumentosNormalizaus = {} local nombreNormalizau local argumentosDuplicaus = false for nombre, valor in pairs(argumentos) do nombreNormalizau = nombre nombreNormalizau = mw.ustring.lower( nombreNormalizau ) nombreNormalizau = string.gsub(nombreNormalizau, "[á]", "a") nombreNormalizau = string.gsub(nombreNormalizau, "[é]", "e") nombreNormalizau = string.gsub(nombreNormalizau, "[í]", "i") nombreNormalizau = string.gsub(nombreNormalizau, "[ó]", "o") nombreNormalizau = string.gsub(nombreNormalizau, "[úü]", "u") if argumentosNormalizaus[nombreNormalizau] then argumentosDuplicaus = true end argumentosNormalizaus[nombreNormalizau] = valor end return argumentosNormalizaus, argumentosDuplicaus end --[[ @nameobtenerTablaDArgumentos @globalargs @paramframe @returntable @descrObtiene una tabla d'argumentos prenendo os parametros recibius tanto dende a plantilla como dende a invocación d'un módulo. En caso de duplicau tien preferencia a valor d\'a invocación. Por eixemplo: con a plantilla:{{Plantilla |campo=valor |key=clave }} y a invocación:{{#invoke:Módulo |key=value }} s'obtiene:{ ['campo'] = 'valor', ['key'] = 'value' } --]] function z.obtenerTablaDArgumentos(frame) -- global args args = {} local function paramMerge(orig, copy) local data = {} for key, val in pairs(orig) do data[key] = val end for key, val in pairs(copy) do data[key] = val end return data end if frame then -- parentArgs = frame:getParent().args or {} if type(frame.getParent) == 'function' then local parent = frame:getParent() if parent then args = paramMerge(args, parent.args) end end -- invokeArgs = frame.args or frame or {} if type(frame.args) == 'table' then args = paramMerge(args, frame.args) elseif type(frame) == 'table' then args = paramMerge(args, frame) end end return args end --[[ @nameobtenerValorDArgumentos @globalargs @paramlist @returnstring or nil @descrObtiene o primer argumento valido dende una tabla de parametros. Ista tabla de parametros ye una lista que contiene os nombres d'os argumentos u atras tablas con as funcions pa obtener-los. Parametros: con os argumentos:{ ['campo'] = 'valor', ['key'] = 'value' } y usando a clamada:obtenerValorDArgumentos{'dato', 'campo', 'key'} s'obtiene a valor:'valor' pues 'dato' no ye un argumento y 'campo' en ye o primero trobau Funcions: tamién se puet gritar con una función d\'a forma obtenerValorDArgumentos{'dato', { obtenerDato, '1', '2' }} de forma que si l'argumento 'dato' no existe se grita a la función obtenerDato('1', '2') --]] function z.obtenerValorDArgumentos(list) -- global args local lang = mw.language.getContentLanguage() local err, key if type(list) == 'number' then key = args[list] elseif type(list) == 'string' then key = args[list] or args[lang:ucfirst(list)] elseif type(list) == 'table' then for num, val in ipairs(list) do if type(val) == 'string' then key = z.obtenerValorDArgumentos(val) elseif type(val) == 'function' then err, key = pcall(val) if err ~= true then key = nil end elseif type(val) == 'table' then if val[1] and type(val[1]) == 'function' then err, key = pcall(val[1], unpack(val, 2)) if err ~= true then key = nil end end end if key ~= nil and key ~= '' then return key -- break end end end return key end return z