Módulo:Formato texto
Apariencia
Uso
Este módulo define varias funciones útiles sobre texto.
Funciones
enlazar()
Función simple para generar un wikienlace
- Código
enlazar(enlace, texto, calificativo)
- Parámetros
enlace
es el enlace a analizartexto
la etiqueta del enlacecalificativo
un valor opcional, entre paréntesis, con tanaño de fuente más pequeño
enlazar2()
Función compleja para generar un wikinelace o archivo multimedia, y comprobar si el destino existe.
- Código
enlazar(enlace, opciones)
- Parámetros
enlace
string
es el enlace a analizar.opciones
mixed
valor mixto para las opciones, según el tipo de dato:
string
la etiqueta del enlace.number
el espacio de nombres como identificador numérico (el identificador de espacio de nombres para "Archivo:" es6
).nil
la etiqueta será idéntica al enlace (no se suprimirá en el wikitexto resultante por razones técnicas).table
una serie de opciones en una tabla (array) cuyas claves son:
etiqueta
string
la etiqueta del enlace.namespace
number
el espacio de nombres.tamaño
string
el tamaño de la imagen (para espacio de nombres6
), seguido del sufijo 'px'.link
string
un enlace alternativo, para archivos multimedia (espacio de nombres6
).calificativo
string
un texto alternativo, entre paréntesis, con fuente más pequeña para espacios de nombre diferentes de6
.debeExistir
bool
tratar el resultado según la prefrencia de existencia o no del enlace.
true
la 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
.false
devuelve el wikienlace indistintamente si existe o no el destino.
entreParentesis()
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()
enCursivas(texto)
enVariasLineas()
enVariasLineas(tabla)
- Ejemplos
enVariasLineas({'Robert de Niro', 'actor'})
→
- Robert de Niro
actor
enVersalitas()
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