Ir al contenido

Módulo:Verso

De Wikisource, la biblioteca libre.
Documentación del módulo


Uso

En {{Verso}}.
Esta documentación está transcluida desde Módulo:Verso/doc.
Los editores pueden experimentar en la zona de pruebas
Por favor, añade las categorías a la subpágina de documentación.
(subpáginas - enlaces)

local p = {}
local altparams= {
	[1] ='c', ['chapter']='c', ['capítulo']='c',['capitulo']='c',
	[2] = 'v', ['verse']='v', ['verso']='v',
	[3] = 'color', ['colour']='color',
	['align'] = 'alinear'
}

function p.verso( frame ) -- función principal para llamar desde {{verso}}
    local argus = {}
	for k,v in pairs(frame.args) do
		argus[k] = v 
	end
	for k,v in pairs(frame:getParent().args) do -- crea una tabla con los parámetros incluídos en la plantilla, y elimina parámetros vacíos
		argus[k] = v 
	end

    for k,v in pairs(altparams) do --parámetros con nobmres alternativos.
	if argus[k] and not argus[v] then
		argus[v] = argus[k]
	end
    end

    local html = mw.html.create() -- cuerpo principal de la plantilla
	local span = html:tag('span')
    span:css('vertical-align','super') --superíndice
    if argus['color']  then
		if mw.ustring.sub( argus['color'], 0, 1 ) == '#' then
			color = argus['color']	
		else
			color = frame:expandTemplate{ title = 'RGB', args = { argus['color'] } }
		end
		
		color = mw.ustring.gsub(color, '#', '#')
		
		span:css('color',color)
	else
		span:css('color', '#2E8B57') -- color por defecto
	end
	if argus['alinear']~= nil then
		if argus['alinear'] == 'left' then
			span:css('position','absolute');
			span:css('left','1em')
		elseif argus['alinear'] == 'float' then
			span:css('float','left')
			span:css('text-align','right')
			span:css('margin-left','-4em')
			span:css('width','4em')
		end
	end
	
    if argus['v']~=nil then
    	anclaje=argus['v']
    	if argus['c']~=nil  then
    		if argus['c']~='' then
    			anclaje=argus['c']..':'.. anclaje
    		end
    	end
    end
    span:attr('title', anclaje)
    span:attr('id', anclaje)
    if argus['notext']~=nil then --Opción de  no texto o texto alternativo a mostrar
    	textoMostrar=notext
    else
    	textoMostrar=argus['v']
    end
    
    span:wikitext( textoMostrar )
    return tostring(html)
end

return p