Módulo:Formato texto
Apariencia
Uso
[editar código]Este módulo define varias funciones útiles sobre texto.
Funciones
[editar código]enlazar()
[editar código]Función simple para generar un wikienlace
- Código
enlazar(enlace, texto, calificativo)- Parámetros
enlacees el enlace a analizartextola etiqueta del enlacecalificativoun valor opcional, entre paréntesis, con tanaño de fuente más pequeño
enlazar2()
[editar código]Función compleja para generar un wikinelace o archivo multimedia, y comprobar si el destino existe.
- Código
enlazar(enlace, opciones)- Parámetros
enlacestringes el enlace a analizar.opcionesmixedvalor mixto para las opciones, según el tipo de dato:
stringla etiqueta del enlace.numberel espacio de nombres como identificador numérico (el identificador de espacio de nombres para "Archivo:" es6).nilla etiqueta será idéntica al enlace (no se suprimirá en el wikitexto resultante por razones técnicas).tableuna serie de opciones en una tabla (array) cuyas claves son:
etiquetastringla etiqueta del enlace.namespacenumberel espacio de nombres.tamañostringel tamaño de la imagen (para espacio de nombres6), seguido del sufijo 'px'.linkstringun enlace alternativo, para archivos multimedia (espacio de nombres6).calificativostringun texto alternativo, entre paréntesis, con fuente más pequeña para espacios de nombre diferentes de6.debeExistirbooltratar el resultado según la prefrencia de existencia o no del enlace.
truela función comprueba si el destino existe. De existir, devuelve el wikienlace, de lo contrario, devuelve laetiqueta. Para el espacio de nombres "Archivo:", siempre se considerarátrue.falsedevuelve el wikienlace indistintamente si existe o no el destino.
entreParentesis()
[editar código]Función simple para poner texto y un calificativo entre paréntesis
- Código
entreParentesis(texto fuera de los paréntesis, texto dentro de los paréntesis)- Ejemplos
entreParentesis(Robert de Niro, actor)→ Robert de Niro (actor)
entreParentesis(Robert de Niro)→ Robert de Niro
entreParentesis(nil, actor)→
enCursivas()
[editar código]enCursivas(texto)enVariasLineas()
[editar código]enVariasLineas(tabla)- Ejemplos
enVariasLineas({'Robert de Niro', 'actor'}) →
- Robert de Niro
actor
enVersalitas()
[editar código]enVersalitas(texto)
local z = {}
function z.enCursivas(texto, ref)
if ref and texto then
return '<i>' .. texto .. '</i>' .. ref
elseif texto then
return '<i>' .. texto .. '</i>'
end
end
-- Adaptado de [[:en:Module:String2]], función sentence
function z.enMayusculas(texto)
if not texto or texto == '' then
return texto
end
-- [[hipótesis (método científico)|hipótesis]]
if texto:find("^%[%[[^|]+|[^%]]+%]%]") then
local b, c = texto:find("|%A*%a")
return string.sub(texto, 1, c-1) .. string.upper(string.sub(texto, c, c)) .. string.sub(texto, c+1)
end
local letterpos = texto:find('%a')
if letterpos then
local first = texto:sub(1, letterpos - 1)
local letter = texto:sub(letterpos, letterpos)
local rest = texto:sub(letterpos + 1)
return first .. string.upper(letter) .. rest
else
return texto
end
end
function z.enVersalitas(texto)
if not texto or texto == '' then
return texto
end
return '<span style="font-variant:small-caps">' .. texto .. '</span>'
end
function z.enVariasLineas(lista)
local resultado
local copia={}
require('Módulo:Tablas').insertarElementosConValor(lista, copia)
-- Solo devolver algo si hay al menos un elemento
if copia[1] then
return table.concat(copia, '<br/>')
end
end
function z.entreComillas(texto, ref)
if not texto or texto == '' then
return texto
elseif ref and ref ~='' then
return '«' .. texto .. '»' .. ref
else
return '«' .. texto .. '»'
end
end
function z.entreParentesis(texto, calificativo)
if not texto or texto == '' then
return
elseif calificativo and calificativo ~= '' then
return texto .. ' (' .. calificativo .. ')'
else
return texto
end
end
function z.separadosPorComa(lista)
local copia={}
require('Módulo:Tablas').insertarElementosConValor(lista, copia)
return table.concat(copia, ', ')
end
-- :: Generar un enlace
function z.enlazar(enlace, texto, calificativo)
local resultado
if enlace and texto then
resultado = '[[' .. enlace .. '|' .. texto .. ']]'
elseif enlace then
resultado = '[[' .. enlace .. ']]'
else
resultado = texto
end
if resultado and calificativo then
return resultado .. ' <small>(' .. calificativo .. ')</small>'
else
return resultado
end
end
-- Generar un enlace (implementación extendida)
function z.enlazar2(enlace, opciones)
if enlace then
local etiqueta, namespace, tamano, borde, enlace2, pieImagen, debeExistir, solotexto
if type(opciones) == 'table' then
etiqueta = opciones['etiqueta'] or ''
namespace = tonumber(opciones['namespace']) or 0
tamano = opciones['tamaño'] or '250px'
borde = opciones['border'] or opciones['borde']
enlace2 = opciones['link']
pieImagen = opciones['pie']
debeExistir = opciones['debe existir'] or opciones['debeExistir'] or opciones['debeexistir']
solotexto = opciones['solotexto']
elseif type(opciones) == 'string' then
etiqueta = opciones
elseif type(opciones) == 'number' then
namespace = opciones
else
etiqueta = enlace
namespace = 0
end
local tituloObj = mw.title.new(enlace, namespace) or {}
local titulo2Obj = {}
if enlace2 then titulo2Obj= mw.title.new(enlace2, 0) end
local resultado = {}
table.insert(resultado, tituloObj.fullText)
if not debeExistir and namespace ~= 6 and namespace ~= 14 then
if etiqueta then table.insert(resultado, etiqueta) end
if calificativo then return '[[' .. prefix .. table.concat(resultado, '|') .. ']]' .. ' <small>(' .. calificativo .. ')</small>' end
return '[[' .. table.concat(resultado, '|') .. ']]'
end
if tituloObj.exists or tituloObj.fileExists then
-- Archivo:
if namespace == 6 then
if solotexto then
if etiqueta then table.insert(resultado, etiqueta) end
return '[[:' .. table.concat(resultado, '|') .. ']]'
end
if tamano then table.insert(resultado, tamano) end
if borde then table.insert(resultado, 'border') end
if titulo2Obj.exists then table.insert(resultado, 'link=' .. titulo2Obj.fullText) end
if etiqueta then table.insert(resultado, etiqueta) end
if pieImagen then return '[[' .. table.concat(resultado, '|') .. ']]' .. '<br>' .. pieImagen end
return '[[' .. table.concat(resultado, '|') .. ']]'
end
-- Categoría:
if namespace == 14 then
if solotexto then
if etiqueta then table.insert(resultado, etiqueta) end
return '[[:' .. table.concat(resultado, '|') .. ']]'
end
return '[[' .. tituloObj.fullText .. ']]'
end
-- El resto
if etiqueta then table.insert(resultado, etiqueta) end
return '[[' .. table.concat(resultado, '|') .. ']]'
end
return etiqueta
end
end
function z.llamadaDesdeUnaPlantilla(frame)
local args = frame.args
if args['tipo argumento'] == 'tabla' then
local tabla = {args[2], args[3], args[4]}
return z[args[1]](tabla)
else
return z[args[1]](args[2], args[3], args[4])
end
end
return z