Módulo:ejemplo
La documentación para este módulo puede ser creada en Módulo:ejemplo/doc
--Parámetros deprecados: apellidos, nombre, enlaceautor, fecha, año, mes, coautores, URL
local export = {}
local generar_error = require("Módulo:traza")
local strfind = require("Módulo:String").find
local substr = require("Módulo:String").sub
local params = {
[1] = {}, --ejemplo
["tradtrad"] = {}, --solo para debug
["trad"] = {}, -- traducción
["traducción"] = {alias_de = "trad"},
["traduccion"] = {alias_de = "trad"},
--Parámetros viejos
["apellido"] = {obs = true},
["apellidos"] = {obs = true},
["nombre"] = {obs = true},
["nombres"] = {obs = true},
["publicación"] = {obs = true},
["publicacion"] = {obs = true},
["first"] = {obs = true},
["last"] = {obs = true},
["accessdate"] = {obs = true},
["obra"] = {obs = true},
["urlarchivo"] = {obs = true},
["fechaarchivo"] = {obs = true},
["urltrad"] = {obs = true},
["año"] = {obs = true},
["mes"] = {obs = true},
["URL"] = {obs = true},
["ISBN"] = {obs = true},
["ISSN"] = {obs = true},
["fechaacceso"] = {obs = true},
["URLcapítulo"] = {obs = true},
["URLcapitulo"] = {obs = true},
["cita"] = {obs = true},
["otros"] = {obs = true},
["enlaceautor"] = {obs = true},
["coautores"] = {obs = true},
-- resto de parámetros para referencia
["c"] = {},
["cat"] = {alias_de = "c"},
["categoría"] = {alias_de = "c"},
--Libros, artículos y general
["a"] = {lista = true},
["autor"] = {alias_de = "a"},
["artista"] = {alias_de = "a"},
["remitente"] = {alias_de = "a"},
["de"] = {alias_de = "a"},
["v"] = {},
["version"] = {alias_de = "v"},
["versión"] = {alias_de = "v"},
["editor"] = {lista = true},
["ilustrador"] = {lista = true},
["compositor"] = {lista=true},
["traductor"] = {lista=true},
["compilador"] = {lista=true},
["interprete"] = {lista=true},
["intérprete"] = {alias_de = "interprete"},
--Títulos
["t0"] = {},
["revista"] = {alias_de = "t0"},
["colección"] = {alias_de = "t0"},
["coleccion"] = {alias_de = "t0"},
["t"] = {},
["t1"] = {alias_de = "t"},
["título"] = {alias_de = "t"},
["titulo"] = {alias_de = "t"},
["t2"] = {},
["subtítulo"] = {alias_de = "t2"},
["subtitulo"] = {alias_de = "t2"},
["parte"] = {alias_de = "t2"},
["art"] = {alias_de = "t2"},
["artículo"] = {alias_de = "t2"},
["termino"] = {alias_de = "t2"},
["término"] = {alias_de = "t2"},
["t3"] = {},
["cap"] = {alias_de = "t3"},
["capítulo"] = {alias_de = "t3"},
["capitulo"] = {alias_de = "t3"},
["subsubtítulo"] = {alias_de = "t3"},
["subsubtitulo"] = {alias_de = "t3"},
["sección"] = {alias_de = "t3"},
["seccion"] = {alias_de = "t3"},
["sec"] = {alias_de = "t3"},
["inc"] = {alias_de = "t3"},
["inciso"] = {alias_de = "t3"},
---Otros campos de libros
["p"] = {},
["pp"] = {alias_de = "p"},
["pag"] = {alias_de = "p"},
["pág"] = {alias_de = "p"},
["pags"] = {alias_de = "p"},
["págs"] = {alias_de = "p"},
["pagina"] = {alias_de = "p"},
["página"] = {alias_de = "p"},
["paginas"] = {alias_de = "p"},
["páginas"] = {alias_de = "p"},
["tomo"] = {tipo = "num"},
["vol"] = {tipo = "num"},
["volumen"] = {alias_de = "vol"},
["edicion"] = {tipo = "num"},
["edición"] = {alias_de = "edicion"},
["pasaje"] = {}, --Por ejemplo LA Biblia o las obras griegas clásicas; también aplica para revistas de artículos
--Instituciones, editoriales, etc.
["editorial"] = {},
["sitio"] = {alias_de = "editorial"},
["diario"] = {alias_de = "editorial"},
["inst"] = {}, --institución
["institución"] = {alias_de = "inst"},
["institucion"] = {alias_de = "inst"},
["org"] = {alias_de = "inst"},
["organizacion"] = {alias_de = "inst"},
["organización"] = {alias_de = "inst"},
--Fecha YYYY-MM-DD
["f"] = {},
["fecha"] = {alias_de = "f"},
["fo"] = {},
["fechaoriginal"] = {alias_de = "fo"},
["fecha original"] = {},
--también fc = fecha consulta
--Lugar
["l"] = {},
["lugar"] = {alias_de = "l"},
["ubicacion"] = {alias_de = "l"},
["ubicación"] = {alias_de = "l"},
["lo"] = {},
["lugaroriginal"] = {alias_de = "lo"},
["lugar original"] = {},
["ubicaciónoriginal"] = {alias_de = "lo"},
["lugar original"] = {},
--Códigos de identifiación
["id"] = {},
["pid"] = {alias_de = "id"},
["patenteid"] = {alias_de = "id"},
["doi"] = {},
["isan"] = {},
["isbn"] = {},
["ismn"] = {},
["isrc"] = {},
["issn"] = {},
["iswc"] = {},
["oclc"] = {},
-- diccionario
["urlprefijo"] = {},
["urlsufijo"] = {},
--musica y audio
["album"] = {},
["álbum"] = {alias_de = "album"},
["n"] = {tipo = "num"},
["num"] = {alias_de = "n"},
["núm"] = {alias_de = "n"},
["nro"] = {alias_de = "n"},
["numero"] = {alias_de = "n"},
["número"] = {alias_de = "n"},
["estudio"] = {},
--audiovisual
["clip"] = {},
["temporada"] = {tipo = "num"},
["m"] = {},
["modo"] = {alias_de = "m"},
["formato"] = {alias_de = "m"},
["plataforma"] = {alias_de = "m"},
--cartas e emails
["destinatario"] = {lista = true},
["receptor"] = {alias_de = "destinatario"},
["para"] = {alias_de = "destinatario"},
["lr"] = {alias_de = "l"},
["lugarremitente"] = {alias_de = "l"},
["lugar remitente"] = {},
["ld"] = {},
["lugardestinatario"] = {alias_de = "ld"},
["lugar destinatario"] = {},
--URL
["u"] = {},
["url"] = {alias_de = "u"},
["fc"] = {},
["fechaconsulta"] = {alias_de = "fc"},
["fecha consulta"] = {},
["fechaacceso"] = {alias_de = "fc"},
--Si es esbozo o no
["esbozo"] = {tipo = "bool"},
["borrador"] = {alias_de = "esbozo"},
--Observaciones
["obs"] = {},
["nota"] = {alias_de = "obs"},
-- Parámetros duplicados por si se quiere incluir ref de traduccion
["tradc"] = {},
["tradcat"] = {alias_de = "tradc"},
["tradcategoría"] = {alias_de = "tradc"},
--Libros, artículos y general
["trada"] = {lista = true},
["tradautor"] = {alias_de = "trada"},
["tradartista"] = {alias_de = "trada"},
["tradremitente"] = {alias_de = "trada"},
["tradde"] = {alias_de = "trada"},
["tradv"] = {},
["tradversion"] = {alias_de = "tradv"},
["tradversión"] = {alias_de = "tradv"},
["tradeditor"] = {lista = true},
["tradilustrador"] = {lista = true},
["tradcompositor"] = {lista=true},
["tradtraductor"] = {lista=true},
["tradcompilador"] = {lista=true},
["tradinterprete"] = {lista=true},
["tradintérprete"] = {alias_de = "tradinterprete"},
--Títulos
["tradt0"] = {},
["tradrevista"] = {alias_de = "tradt0"},
["tradcolección"] = {alias_de = "tradt0"},
["tradcoleccion"] = {alias_de = "tradt0"},
["tradt"] = {},
["tradt1"] = {alias_de = "tradt"},
["tradtítulo"] = {alias_de = "tradt"},
["tradtitulo"] = {alias_de = "tradt"},
["tradt2"] = {},
["tradsubtítulo"] = {alias_de = "tradt2"},
["tradsubtitulo"] = {alias_de = "tradt2"},
["tradparte"] = {alias_de = "tradt2"},
["tradart"] = {alias_de = "tradt2"},
["tradartículo"] = {alias_de = "tradt2"},
["tradtermino"] = {alias_de = "tradt2"},
["tradtérmino"] = {alias_de = "tradt2"},
["tradt3"] = {},
["tradcap"] = {alias_de = "tradt3"},
["tradcapítulo"] = {alias_de = "tradt3"},
["tradcapitulo"] = {alias_de = "tradt3"},
["tradsubsubtítulo"] = {alias_de = "tradt3"},
["tradsubsubtitulo"] = {alias_de = "tradt3"},
["tradsección"] = {alias_de = "tradt3"},
["tradseccion"] = {alias_de = "tradt3"},
["tradsec"] = {alias_de = "tradt3"},
["tradinc"] = {alias_de = "tradt3"},
["tradinciso"] = {alias_de = "tradt3"},
---Otros campos de libros
["tradp"] = {},
["tradpp"] = {alias_de = "tradp"},
["tradpag"] = {alias_de = "tradp"},
["tradpág"] = {alias_de = "tradp"},
["tradpags"] = {alias_de = "tradp"},
["tradpágs"] = {alias_de = "tradp"},
["tradpagina"] = {alias_de = "tradp"},
["tradpágina"] = {alias_de = "tradp"},
["tradpaginas"] = {alias_de = "tradp"},
["tradpáginas"] = {alias_de = "tradp"},
["tradtomo"] = {tipo = "num"},
["tradvol"] = {tipo = "num"},
["tradvolumen"] = {alias_de = "tradvol"},
["tradedicion"] = {tipo = "num"},
["tradedición"] = {alias_de = "tradedicion"},
["tradpasaje"] = {}, --Por ejemplo LA Biblia o las obras griegas clásicas; también aplica para revistas de artículos
--Instituciones, editoriales, etc.
["tradeditorial"] = {},
["tradsitio"] = {alias_de = "tradeditorial"},
["traddiario"] = {alias_de = "tradeditorial"},
["tradinst"] = {}, --institución
["tradinstitución"] = {alias_de = "tradinst"},
["tradinstitucion"] = {alias_de = "tradinst"},
["tradorg"] = {alias_de = "tradinst"},
["tradorganizacion"] = {alias_de = "tradinst"},
["tradorganización"] = {alias_de = "tradinst"},
--Fecha YYYY-MM-DD
["tradf"] = {},
["tradfecha"] = {alias_de = "tradf"},
["tradfo"] = {},
["tradfechaoriginal"] = {alias_de = "tradfo"},
["tradfecha original"] = {},
--también fc = fecha consulta
--Lugar
["tradl"] = {},
["tradlugar"] = {alias_de = "tradl"},
["tradubicacion"] = {alias_de = "tradl"},
["tradubicación"] = {alias_de = "tradl"},
["tradlo"] = {},
["tradlugaroriginal"] = {alias_de = "tradlo"},
["tradubicaciónoriginal"] = {alias_de = "tradlo"},
["tradlugar original"] = {},
--Códigos de identifiación
["tradid"] = {},
["tradpid"] = {alias_de = "tradid"},
["tradpatenteid"] = {alias_de = "tradid"},
["traddoi"] = {},
["tradisan"] = {},
["tradisbn"] = {},
["tradismn"] = {},
["tradisrc"] = {},
["tradissn"] = {},
["tradiswc"] = {},
["tradoclc"] = {},
-- diccionario
["tradurlprefijo"] = {},
["tradurlsufijo"] = {},
--musica y audio
["tradalbum"] = {},
["tradálbum"] = {alias_de = "tradalbum"},
["tradn"] = {tipo = "num"},
["tradnum"] = {alias_de = "tradn"},
["tradnúm"] = {alias_de = "tradn"},
["tradnro"] = {alias_de = "tradn"},
["tradnumero"] = {alias_de = "tradn"},
["tradnúmero"] = {alias_de = "tradn"},
["tradestudio"] = {},
--audiovisual
["tradclip"] = {},
["tradtemporada"] = {tipo = "num"},
["tradm"] = {},
["tradmodo"] = {alias_de = "tradm"},
["tradformato"] = {alias_de = "tradm"},
["tradplataforma"] = {alias_de = "tradm"},
--cartas e emails
["traddestinatario"] = {lista = true},
["tradreceptor"] = {alias_de = "traddestinatario"},
["tradpara"] = {alias_de = "traddestinatario"},
["tradlr"] = {alias_de = "tradl"},
["tradlugarremitente"] = {alias_de = "tradl"},
["tradlugar remitente"] = {},
["tradld"] = {},
["tradlugardestinatario"] = {alias_de = "tradld"},
["tradlugar destinatario"] = {},
--URL
["tradu"] = {},
["tradurl"] = {alias_de = "tradu"},
["tradfc"] = {},
["tradfechaconsulta"] = {alias_de = "tradfc"},
["tradfecha consulta"] = {},
["tradfechaacceso"] = {alias_de = "tradfc"},
--Si es esbozo o no
["tradesbozo"] = {tipo = "bool"},
["tradborrador"] = {alias_de = "tradesbozo"},
--Observaciones
["tradobs"] = {},
["tradnota"] = {alias_de = "tradobs"}
}
local function args_tiene_ref(args)
for arg, val in pairs(args) do
if type(arg) ~= "number" and ((type(val) == "table" and #val > 0) or (type(val) ~= "table" and type(val) ~= "nil")) then
return true
end
end
return false
end
local function separar_args_trad(args)
local args2 = {}
for arg, val in pairs(args) do
if type(arg) == "string" and (arg ~= "traductor") then
tradarg = {arg:match("^trad(.+)$")}
if tradarg[1] then
args2[tradarg[1]] = val
args[arg] = nil
end
end
end
return args2
end
local function obtener_ejemplo(args, frame, titulo_de_ejemplo)
if not args[1] or args[1] == "" then
local title = mw.title.getCurrentTitle().fullText
if title == "Plantilla:ejemplo" then
return "Use esta plantilla en el espacio principal."
end
if title == "Plantilla:cita" then
return "Use esta plantilla fuera del espacio principal."
end
error("Ejemplo vacío. Rellene todos los parámetros tal como está indicado en la documentación de la plantilla.")
end
local function esta_desbalanceada(s)
local cursiva_abierta = false
local negrita_abierta = false
local parentesis_abierto = false
local comillas_previas = 0
if not s or s == "" then
return false
end
for i=1,#s do
if substr(s, i, i) == "'" then
comillas_previas = comillas_previas + 1
else
if comillas_previas == 2 then
cursiva_abierta = not cursiva_abierta
elseif comillas_previas == 3 then
negrita_abierta = not negrita_abierta
end
comillas_previas = 0
if substr(s, i, i) == "(" then
if parentesis_abierto then
return true
end
parentesis_abierto = true
elseif substr(s, i, i) == ")" then
if not parentesis_abierto then
return true
end
parentesis_abierto = false
end
end
end
return cursiva_abierta or negrita_abierta or parentesis_abierto
end
if esta_desbalanceada(args[1]) or esta_desbalanceada(args["trad"]) then
generar_error("desbalance")
end
if strfind(args[1], "h?t?t?p?s?:?/?/?.?w?w?w?%.?[-a-zA-Z0-9@:%%%._%+~#=]+%.[a-z]+") or strfind(args[1], "%[%[[wsb]:") then
generar_error("url")
end
local tradtrad = args["tradtrad"]
args["tradtrad"] = nil
if tradtrad then
generar_error("tradtrad")
end
local ejemplo = args[1]
local traduccion = args["trad"]
args[1] = nil
args["trad"] = nil
local args_trad = separar_args_trad(args)
local ref, ref2 = nil, nil
if args_tiene_ref(args) then
ref = require("Módulo:referencia").generar_referencia_con_link_implicito(args)
end
if args_tiene_ref(args_trad) then
if not args_trad["c"] or args_trad["c"] == "" then
args_trad["c"] = args["c"]
end
ref2 = require("Módulo:referencia").generar_referencia_con_link_implicito(args_trad)
end
if titulo_de_ejemplo and not traduccion and (type(ref) ~= "string" or ref == "") and #ejemplo < 200 and not ejemplo:find("<br>") then
return ":*'''Ejemplo:''' "..ejemplo
end
local ej = {}
if titulo_de_ejemplo then
table.insert(ej, ":*'''Ejemplo:''' <span class='mw-collapsible mw-collapsed' data-expandtext='▼' data-collapsetext='▲'>")
end
table.insert(ej, frame:extensionTag("templatestyles", nil, {src = "Plantilla:ejemplo/estilo.css"}).."<blockquote><span class='cita'>"..ejemplo.."</span>")
if traduccion then
table.insert(ej, "<span class='trad'>''→ ''"..traduccion.."</span>")
end
if type(ref) == "string" and ref ~= "" then
table.insert(ej, "<span class='ref'>"..ref)
if type(ref2) == "string" and ref2 ~= "" then
table.insert(ej, "<br>Traducción: "..ref2)
end
table.insert(ej, "</span>")
end
table.insert(ej, "</blockquote></span>")
return table.concat(ej)
end
function export.generar_ejemplo_test(argumentos_plantilla)
local args = require("Módulo:parámetros").obtener_parametros(argumentos_plantilla, params)
return obtener_ejemplo(args, frame)
end
function export.generar_ejemplo(frame)
local parent_frame = frame:getParent()
local args = require("Módulo:parámetros").obtener_parametros(parent_frame.args, params)
return obtener_ejemplo(args, frame, true)
end
function export.generar_cita(frame)
local parent_frame = frame:getParent()
local args = require("Módulo:parámetros").obtener_parametros(parent_frame.args, params)
return obtener_ejemplo(args, frame, false)
end
return export