Módulo:taller
La documentación para este módulo puede ser creada en Módulo:taller/doc
local Contexto = {}
local SEPARATORS = {
["y"] = " y ",
["o"] = " o ",
["e"] = " e ",
["u"] = " u ",
["_"] = " ",
[","] = ", "
}
function Contexto.listar(frame)
-- local debugstr = ""
-- suponemos que se invoca directamente
local params = frame.args
-- debugstr = debugstr .. "fargs[1]=" .. tostring(params[1])
if params[1] == nil then
-- suponemos que se invoca sin argumentos, se toman los de la plantilla que la invoca.
params = frame:getParent().args
-- debugstr = debugstr .. "; pargs[1]=" .. tostring(params[1])
end
if not params[1] then
return ""
end
-- param *leng*
local arg_leng = params.leng
-- debugstr = debugstr .. "; leng=" .. tostring(arg_leng)
local output = {}
local lastIsSep = true
local base = 0
-- si tiene etiqueta, viene de una enumeración de etiquetas:
-- {{et1|nota=aaa|et2|nota2=bbb|...|etN}}
--
-- Esto quiere decir que ya se ha expandido la primera etiqueta,
-- y hay que desplazar las notas
if params.etiqueta then
lastIsSep = false
base = 1
end
for idx in ipairs(params) do
local arg = params[idx]
-- debugstr = debugstr .. "; [" .. idx .."]=" .. tostring(arg)
local sep = SEPARATORS[arg]
if sep then
table.insert(output, sep)
lastIsSep = true
elseif arg and mw.ustring.len(arg) > 0 then
if not lastIsSep then
-- separador de lista
table.insert(output, SEPARATORS[","])
end
lastIsSep = false
-- se comprueba si hay que invocar plantilla
local template = mw.title.makeTitle( 'Template', arg )
-- if not template then
-- error("comprobando existencia:" .. mw.allToString("etiqueta", params.etiqueta, "arg", arg, "base", base, "idx", idx))
-- end
if template and template.exists then
-- se expande la plantilla
arg = frame:expandTemplate{title = arg, args = { leng = arg_leng, ["sub"]="1" } }
end
table.insert(output, arg)
-- comprueba si existe nota
local n_nota = base + idx
local idx_nota = "nota" .. n_nota
local arg_nota
if n_nota == 1 then
arg_nota = params.nota or params[idx_nota]
else
arg_nota = params[idx_nota]
end
if arg_nota and mw.ustring.len(arg_nota) > 0 then
table.insert(output, " (" .. arg_nota .. ")")
end
end
end
-- return table.concat(output) .. " DEBUG " .. debugstr
return table.concat(output)
end
local function args2str(args)
local out = {}
for k, v in pairs(args) do
table.insert(out, "k: ".. tostring(k) .. ", v: " .. tostring(v))
end
return table.concat(out, "\n\n")
end
function Contexto.testParentFrame(frame)
local params = frame:getParent().args
return args2str(params)
end
function Contexto.testFrame(frame)
local params = frame.args
return args2str(params)
end
return Contexto