Documentación del módulo


Uso

Campo de pruebas de las plantillas de este módulo:

centrar
Texto de pruebas Parrafo 2
derecha
por defecto
Texto de pruebas
margen explícito (margen=4em)
Texto de pruebas
margen implícito (segundo parámetro=4em)
Texto de pruebas
margen implícito por defecto (segundo parámetro vacío)
Texto de pruebas
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)
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.
margen explícito (margen=4em)
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.
margen implícito (segundo parámetro=4em)
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.
bloque centro
ancho = 28 em, alinear=justify
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.
bloque derecha
ancho = 28em
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.

ancho = 28em, margen = 4em
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.

casos de color
Color en inglés (red)
Texto de pruebas
Color en español (rojo) definidos en {{RGB}}
Texto de pruebas
Color en hexadecimal (#e66)
Texto de pruebas
Color en hexadecimal (#ee6666)
Texto de pruebas
Color en otros formatos (rgba(0, 191, 255, 54))
Texto de pruebas
Color input no compatible (pruebas)
Texto de 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.

Esta documentación está transcluida desde Módulo:Centrar/pruebas/doc.
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