Más idiomas
Más acciones
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
- Plantilla:Code es el enlace a analizar
- Plantilla:Code la etiqueta del enlace
- Plantilla:Code 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
- Plantilla:Code Plantilla:Code es el enlace a analizar.
- Plantilla:Code Plantilla:Code valor mixto para las opciones, según el tipo de dato:
- Plantilla:Code la etiqueta del enlace.
- Plantilla:Code el espacio de nombres como identificador numérico (el identificador de espacio de nombres para "Archivo:" es Plantilla:Code).
- Plantilla:Code la etiqueta será idéntica al enlace (no se suprimirá en el wikitexto resultante por razones técnicas).
- Plantilla:Code una serie de opciones en una tabla (array) cuyas claves son:
- Plantilla:Code Plantilla:Code la etiqueta del enlace.
- Plantilla:Code Plantilla:Code el espacio de nombres.
- Plantilla:Code Plantilla:Code el tamaño de la imagen (para espacio de nombres Plantilla:Code), seguido del sufijo 'px'.
- Plantilla:Code Plantilla:Code un enlace alternativo, para archivos multimedia (espacio de nombres Plantilla:Code).
- Plantilla:Code Plantilla:Code un texto alternativo, entre paréntesis, con fuente más pequeña para espacios de nombre diferentes de Plantilla:Code.
- Plantilla:Code Plantilla:Code tratar el resultado según la prefrencia de existencia o no del enlace.
- Plantilla:Code la función comprueba si el destino existe. De existir, devuelve el wikienlace, de lo contrario, devuelve la Plantilla:Code. Para el espacio de nombres "Archivo:", siempre se considerará Plantilla:Code.
- Plantilla:Code 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