Módulo:Categoría de autor

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

Uso

En plantilla {{Categoría de autor}}
Esta documentación está transcluida desde Módulo:Categoría de autor/doc.
Los editores pueden experimentar en la zona de pruebas de este módulo.
Por favor, añade las categorías e interwikis a la subpágina de documentación. Subpáginas de este módulo.

-- Modulo para plantilla Categoría de Autor

local p = {}
local prefijos ={ 'Obras', 'Documentos', 'Traducciones', 'Poesías', 'Discursos',
	'Sonetos', 'Cuentos', 'Novelas', 'Epístolas', 'Ensayos', 'Artículos', 'Teatro', 'Fábulas',
	'Canciones' , 'Odas', 'Romances', 'Villancicos', 'Entremeses', 'Autos Sacramentales', 
	'Jácaras', 'Mojigangas', 'Décimas' , 'Tangos', 'Decretos', 'Ilustraciones' , 
	'Biografías', 'Bulas', 'Encíclicas', 'Tragedias', 'Comedias', 'Idilios', 'Crónicas' }

local Wikidata = require('Módulo:Wikidata')
local Entidad  = mw.wikibase.getEntityObject() or ''     -- Tabla con los datos en Wikidata de la persona.

-- Función que devuelve la lista de los valores de una propiedad en Wikidata formateados
function propiedad(idPropiedad,opciones)
	
    if Entidad and Entidad.claims   then --and Entidad.claims[idPropiedad] then
    	if not opciones then
    		opciones = {}
    	end
    	opciones['propiedad'] = idPropiedad

        valorPropiedad = Wikidata.getPropiedad(opciones,Entidad.claims[idPropiedad])
        
        if not valorPropiedad or valorPropiedad == '' then
        	return ''
        end
        return valorPropiedad
    else return ''
    end
end

function p.cat( frame )
	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
	local titulo = mw.title.getCurrentTitle().baseText
	local categoria = ''
    local autor=''	
	local html = mw.html.create() -- cuerpo principal de la plantilla
	local tipo
    for i,cadena in ipairs(prefijos) do
    	if mw.ustring.find(titulo,cadena) then
    		tipo=cadena
    		categoria='[[Categoría:'.. tipo ..' por autor]]'
    		autor=mw.ustring.sub(titulo,mw.ustring.len(tipo) + 4)  -- mas 4 por el ' de '
    		break
    	end
    end
    if tipo=='Biografías' then
    		autor=mw.ustring.sub(titulo,mw.ustring.len(tipo) + 14) -- mas 14 por el ' escritas por '
    end
    autor = argus[2] or autor --posibilidad de autor explícito cuando es diferente del nombre de la categoría 
    if not(tipo=='Documentos' or tipo=='Obras' or tipo=='Decretos' or tipo=='Bulas' or tipo=='Encíclicas' or tipo=='Discursos') then
    	categoria=categoria .. '[[Categoría:Obras de ' .. autor ..'|'..mw.title.getCurrentTitle().text.. ']]' 
    end
    if tipo=='Epístolas' or tipo=='Decretos' or tipo=='Bulas' or tipo=='Encíclicas' or tipo=='Discursos' then
    	if  mw.title.new( 'Documentos de ' .. autor, 'Categoría' ).exists == true then
    			categoria=categoria .. '[[Categoría:Documentos de ' .. autor ..'|'..mw.title.getCurrentTitle().text.. ']]'  
    			
    	end
    end
    local tabla = html:tag('table'):addClass('divgrande')
    local divgrande = tabla:tag('tr') 
    local celda1= divgrande:tag('td'):addClass('celda1')
    local celda2= divgrande:tag('td'):addClass('celda2')
	celda1:wikitext('\'\'\'[[Autor:'..autor..'|◄]] Autor: [[Autor:'..autor..'|'..autor..']]\'\'\'') 
    imagen='Commons-logo.svg'
    nombre='Commons'
    
    if propiedad('p373') ~= '' then --categoría en commons
				celda2:wikitext('[[Archivo:'..imagen..'|14px|'..nombre..' logo]]'..' [[:c:Category:'..propiedad('p373')..'|'..tipo .. ']] en Wikimedia Commons')
	end
	html:wikitext(categoria)
	if argus[1]~=nil then
		html:wikitext(frame:preprocess('{{DEFAULTSORT:' .. argus[1] .. '}}'))
	else
		html:wikitext(frame:preprocess('{{DEFAULTSORT:' .. autor .. '}}'))
	end
	return tostring(html)
end

return p