Módulo:Centrar/pruebas
Uso
Campo de pruebas de las plantillas de este módulo:
- centrar
- derecha
- por defecto
- margen explícito (margen=4em)
- margen implícito (segundo parámetro=4em)
- margen implícito por defecto (segundo parámetro vacío)
- flotadores
Texto de pruebasLorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.Texto de pruebas
- margenes implícitos (comportamiento de enWS) flotador izq (2=2em, 3=3em, 4=4em)
Texto de pruebasLorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
- margenes implícitos (comportamiento de enWS) flotador der (2=2em, 3=3em, 4=4em)
Texto de pruebasLorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
- margenes implícitos (comportamiento de enWS) flotador der (2=vacío, 3=vacío, 4=4em)
Texto de pruebasLorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
- sangría colgante
- margen por defecto (segundo parámetro cualquier otra cosa)
- margen explícito (margen=4em)
- margen implícito (segundo parámetro=4em)
- bloque centro
- ancho = 28 em, alinear=justify
- bloque derecha
- ancho = 28em
- ancho = 28em, margen = 4em
- casos de color
- Color en inglés (red)
- Color en español (rojo) definidos en {{RGB}}
- Color en hexadecimal (#e66)
- Color en hexadecimal (#ee6666)
- Color en otros formatos (rgba(0, 191, 255, 54))
- Color input no compatible (pruebas)
Pruebas plantillas abiertas
- Parámetros implícitos (centrar, color, parámetros inválidos, tamaño, negrita, minúsculas, "cursive", cursivas, subrayado)
Cualquier cosa acá
- sangría colgante/c, m y f
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
Por favor, añade las categorías a la subpágina de documentación.
(subpáginas - enlaces)
require('strict')
-- módulo para plantillas de formato
local p = {}
local make_style_string = require('Module:Optional style').make_style_string
local tamFuente = { --tamaños de letra segun nombre de las plantillas
['xx-menor']="58%" ,
['x-menor']="69%" ,
['menor']="83%" ,
['grande']="120%" ,
['x-grande']="144%" ,
['xx-grande']="182%" ,
['xxx-grande']="207%" ,
['xxxx-grande']="249%" ,
['xxxxx-grande']="283%" ,
['xxxxxx-grande']="323%",
['sm']="smaller"
}
local textTransform = {
['lc']='lowercase' ,
['uc']='uppercase' ,
['cap']='capitalize'
}
local fontVariant = {
['sc']='small-caps',
['may']='small-caps',
['asc']='all-small-caps',
['all-small-caps']='all-small-caps'
}
local fontFamily = { --familia genérica de fuentes
['monospace']='monospace',
['serif']='serif',
['sans-serif']='sans-serif',
['cursive']='cursive',
['fantasy']='fantasy'
}
local fontWeight = { --negrita
['negrita'] = 'bold',
['bold'] = 'bold',
}
local fontStyle = { --cursivas
['cursiva'] = 'italic',
['itálica'] = 'italic',
['italic'] = 'italic',
['normal'] = 'normal', -- sin cursiva
}
local textDecoration = { --subrayado
['subrayado'] = 'underline',
['underline'] = 'underline',
}
local altparams= {['font-size']='fs', ['tamaño']='fs',
['line-height']='lh', ['interlineado']='lh',
['letter-spacing']='sp', ['espaciado']='sp',
['offset']='margen',
['id']='anclaje',
['width']='ancho',
['align'] = 'alinear',
['style'] = 'estilo',
['class'] = 'clase'
}
local params ={['tag']=1, ['open']=1, ['alinear']=1,['ancho']=1,['float']=1,['fs']=1,['lh']=1,['sp']=1,['margen']=1,['max-width']=1,['anclaje']=1,
['ancho']=1,['estilo']=1,['color']=1,['fondo']=1,['plantilla']=1,['colgante']=1,['bloque']=1, ['clase']=1}
local function argus_estilo(argus)
-- Función que procesa la lista de parámetros (argus) y
-- regresa una table con todos los estilos CSS
local css = {}
local clases = {}
css['text-align'] = argus.alinear
css['width'] = argus.ancho
css['float'] = argus.float
-- sección de parámetros
---- tamaño
if argus.fs and tamFuente[argus.fs]~=nil then
css['font-size'] = tamFuente[argus.fs] -- tamaños usando el nombre de las plantillas de tamaño de fuente
elseif argus.fs then
css['font-size'] = argus.fs -- tamaño personalizado
end
if argus.lh then
css['line-height'] = argus.lh
end
if argus.sp then
css['letter-spacing'] = argus.sp
end
-- sección de opciones
for k,v in pairs(argus) do -- opciones
if type(k) == 'number' and k~= 1 then
if textTransform[argus[k]] ~= nil then
css['text-transform'] = textTransform[argus[k]] --opciones transformación de texto
elseif fontVariant[argus[k]] ~= nil then -- opcion variante de fuente (small caps)
css['font-variant'] = fontVariant[argus[k]]
elseif fontFamily[argus[k]] ~= nil then -- opcion familia de fuentes
css['font-family'] = fontFamily[argus[k]]
elseif tamFuente[argus[k]] ~= nil then -- opciones de tamaño de fuente sin usar el parámetro fs
css['font-size'] = tamFuente[argus[k]]
elseif fontWeight[argus[k]] ~= nil then -- opcion de peso de fuente (negrita)
css['font-weight'] = fontWeight[argus[k]]
elseif fontStyle[argus[k]] ~= nil then -- opcion de estilo de fuente (cursiva)
css['font-style'] = fontStyle[argus[k]]
elseif textDecoration[argus[k]] ~= nil then -- opcion de decoracion de texto (subrayado)
css['text-decoration'] = textDecoration[argus[k]]
end
end
end
-- css['clear'] = 'both' — No utilidad aparente?
--otros parámetros
if argus.plantilla == 'derecha' then --para reutilizar código en {{derecha}}
css['margin-right'] = argus.margen or argus[2]
end
if argus.float == 'right' then --asimilar comportamieto de {{float right}} y {{flotador derecha}}
table.insert(clases, 'ws-flotador-d')
css['margin-right'] = argus.margen or argus[2]
css['margin-top'] = argus[3]
css['margin-bottom'] = argus[3]
css['margin-left'] = argus[4]
end
if argus.float == 'left' then --asimilar comportamieto de {{float left}} y {{flotador izquierda}}
table.insert(clases, 'ws-flotador-i')
css['margin-top'] = argus[2]
css['margin-bottom'] = argus[2]
css['margin-right'] = argus[3]
end
if argus.colgante == 's' then --asimilar comportamieto de {{sangría colgante}}
table.insert(clases, 'ws-sangria-colgante')
local margen = argus.margen or argus[2] or 'NaN'
if tonumber(margen:sub(1,1)) then
css['margin-left'] = margen
css['text-indent'] = '-'..margen
end
if argus['colgante'] == 'm' then --asimilar comportamieto de {{sangría colgante/m}}
table.insert(clases,'ws-sangria-colgante-m')
local margen = argus['margen'] or argus[2] or 'NaN'
if tonumber(margen:sub(1,1)) then
css['margin-left'] = margen
end
end
end
if argus.bloque == 'centro' then --asimilar comportamiento de {{bloque centro}}
table.insert(clases, 'ws-bloque-centro')
if argus['max-width'] then
css['max-width'] = argus['max-width']
end
elseif argus.bloque == 'derecha' then --asimilar comportamiento de {{bloque derecha}}
table.insert(clases, 'ws-bloque-derecha')
css['margin-right'] = argus.margen
css['text-align'] = argus.alinear
if argus['max-width'] then
css['max-width'] = argus['max-width']
end
elseif argus.bloque == 'izquierda' then --asimilar comportamiento de {{bloque izquierda}}
table.insert(clases, 'ws-bloque-izquierda')
css['margin-left'] = argus.margen or argus[2]
if argus['max-width'] then
css['max-width'] = argus['max-width']
end
end
if argus.estilo then --estilo personalizado, al final para poder sobreescribir todo
css['estilo'] = argus.estilo
end
return css, clases
end
local function color_string(frame, color)
if mw.ustring.sub( color, 0, 1 ) == '#' then
color = color
else
color = frame:expandTemplate{ title = 'RGB', args = { color } }
end
color = mw.ustring.gsub(color, '#', '#')
return color
end
-- función principal para llamar desde {{centrar}} o similar
function p._centrar(frame, argus )
local texto = argus[1]
local id = argus.anclaje or ''
local css, clases = argus_estilo(argus)
local tag = argus.tag or 'div'
-- manejo especial para el color
if argus.color then
css['color'] = color_string(frame, argus.color)
end
if argus.fondo then
css['background'] = color_string(frame, argus.fondo)
end
-- anclaje (ID)
if id ~= '' then
table.insert(clases, 'anclaje')
end
-- clases CSS adicionales
if argus.clase then
table.insert(clases, argus.clase)
end
-- inicio de tag
local contenido = '<'..tag..' '
-- atributos HTML
local id2 = ''
if id ~= '' then id2 = 'id="'..id..'"' end
local clases2 = ''
if next(clases) then clases2 = 'class="'..table.concat(clases, ' ')..'"' end
local atributos = {
id2,
clases2,
make_style_string(css)
}
-- agregar atributos
contenido = contenido..table.concat(atributos, ' ')..'>'
-- agregar texto y cerrar tag si no estamos en {{plantilla/c}}
if not argus.open then
contenido = contenido .. (texto or '') .. '</'..tag..'>'
if argus.bloque == 'derecha' then -- fix para {{bloque derecha}}
contenido = contenido..'<br style="clear:right"/>'
end
end
-- categorías de mantenimiento
for k,v in pairs(argus) do
if (type(k) ~= 'number') and (params[k]==nil) and (altparams[k]==nil) then
contenido = contenido .. '[[Categoría:Wikisource:Artículos que usan parámetros no reconocidos en el módulo Centrar]]'
end
end
return contenido
end
-- metafunciones
local function main(frame, argus)
--parámetros con nobmres alternativos
for k,v in pairs(altparams) do
if argus[k] and not argus[v] then
argus[v] = argus[k]
end
end
return p._centrar(frame, argus)
end
-- función para plantillas cerradas
function p.centrar(frame)
local argus = require('Module:Arguments').getArgs(frame)
return main(frame, argus)
end
-- función para plantillas abiertas
function p.open(frame)
local argus = require('Module:Arguments').getArgs(frame)
argus[12] = argus[1] -- copia el primer arg
argus.open = true
return main(frame, argus)
end
return p