Módulo:NumSym
Apariencia
Este módulo no tiene página de documentación[crear]
-- Módulo diseñado para representar gráficamente números estrobogramáticos
-- Sustituye los caracteres «1 2 3 4 5 6 7 8 9 0 ᘔ Ɛ» por una serie de imágenes
-- en formato SVG almacenadas en commons, de nombre SYMFONT
-- (en alusión a que son fuentes simétricas).
-- El resto de caracteres los deja tal como están.
local NumSym = {}
function nowrap( value )
return tostring(
mw.html.create('span')
:css('white-space', 'nowrap')
:wikitext( value )
:done()
)
end
function NumSym.NUMSYM(frame)
--Volcado del frame
local s = frame.args[1] or '' -- cadena de texto a transformar
local p = frame.args[2] or '' -- tamaño en píxeles
local SALIDA = "" --Valor que devuelve la rutina
local NUMERO = "" --porción
local MATRIZ = {} --Matriz donde se guardan los nombres de las imágenes de los números
MATRIZ['0'] = "[[File:SYMFONT-0.svg|x15px|alt=0]]"
MATRIZ['1'] = "[[File:SYMFONT-1.svg|x15px|alt=1]]"
MATRIZ['2'] = "[[File:SYMFONT-2.svg|x15px|alt=2]]"
MATRIZ['3'] = "[[File:SYMFONT-3.svg|x15px|alt=3]]"
MATRIZ['4'] = "[[File:SYMFONT-4.svg|x15px|alt=4]]"
MATRIZ['5'] = "[[File:SYMFONT-5.svg|x15px|alt=5]]"
MATRIZ['6'] = "[[File:SYMFONT-6.svg|x15px|alt=6]]"
MATRIZ['7'] = "[[File:SYMFONT-7.svg|x15px|alt=7]]"
MATRIZ['8'] = "[[File:SYMFONT-8.svg|x15px|alt=8]]"
MATRIZ['9'] = "[[File:SYMFONT-9.svg|x15px|alt=9]]"
MATRIZ['ᘔ'] = "[[File:SYMFONT-2++.svg|x15px|alt=ᘔ]]"
MATRIZ['Ɛ'] = "[[File:SYMFONT-3++.svg|x15px|alt=Ɛ]]"
MATRIZ['ɛ'] = MATRIZ['Ɛ']
--Si se han metido ᘔ o Ɛ (o ɛ), entonces poner [2] y [3] "reversibles":
if mw.ustring.find(s, '[ᘔƐɛ]') then
MATRIZ['2'] = "[[File:SYMFONT-2+.svg|x15px|alt=2]]"
MATRIZ['3'] = "[[File:SYMFONT-3+.svg|x15px|alt=3]]"
end
local n = 0
local l = mw.ustring.len( s ) or 0
for i = 1, l do
n = n + 1
local c = mw.ustring.sub(s, i, i)
if MATRIZ[c] then
NUMERO = NUMERO .. MATRIZ[c]
else
if n >= 1 then
-- Llamada a nowrap:
NUMERO = nowrap(NUMERO)
SALIDA = SALIDA .. NUMERO
NUMERO = ""
end
SALIDA = SALIDA .. c
n = 0
end
end
--Cierre de la cadena tras salir del for:
if n >= 1 then
NUMERO = nowrap(NUMERO)
end
SALIDA = SALIDA .. NUMERO
--Cambio del tamaño de los números si FFRR[2] es no nulo:
if p ~= '' then
SALIDA = SALIDA:gsub("x15px", "x" .. p .."px")
end
return SALIDA
end
return NumSym