Ir al contenido

Módulo:Enlace Wikidata

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


Uso

Implementa {{Enlace Wikidata}}
Esta documentación está transcluida desde Módulo:Enlace Wikidata/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 = {}

-- Entrega un enlace a una página de un elemento de Wikidata de los siguientes sitios:
--  1. Wikisource
--  2. Wikipedia
--  3. Commons
--  4. Reasonator
function p.link(frame)
	-- Chequeo.
	if frame.args.wikidata == nil or frame.args.wikidata == '' then
		return "<span class='error'>Un parámetro 'wikidata' es necesario.</span>"
	end
	local itemId = frame.args.wikidata
	if not mw.wikibase.isValidEntityId(itemId) then
		return "<span class='error'>" .. itemId .. "' no es un elemento de Wikidata válido.</span>"
	end
	if not mw.wikibase.entityExists(itemId) then
		return "<span class='error'>" .. itemId .. "' no existe en Wikidata.</span>"
	end
	
	local label = mw.wikibase.getLabel(itemId)
	local description = mw.wikibase.getDescription(itemId)
	if frame.args.label ~= nil and frame.args.label ~= '' then
		label = frame.args.label
	end

	-- Busca un enlace según la jerarquía indicada. 
	-- Las dos variables están en el mismo orden.
	local sitelinks = {'eswikisource', 'eswiki', 'commonswiki'}
	local interwikis = {'', 'w', 'commons'}
	local sitios = {'wikisource', 'wikipedia', 'commons'}
	for i = 1, #sitelinks do
		local sitelink = mw.wikibase.getSitelink(itemId, sitelinks[i])
		if sitelink then
			return '<span data-enlace-wikidata="https://www.wikidata.org/entity/'..itemId..
			'" class="enlace-wikidata enlace-wikidata-'..(sitios[i] or 'wikisource')..
			'">[[' .. interwikis[i] .. ':' .. sitelink .. '|<span title="'..(description or '')..
			'">' .. label .. '</span>]]</span>';
		end
	end

	-- Si no encuentra .
	return '<span data-enlace-wikidata="https://www.wikidata.org/entity/'..itemId..'" class="plainlinks enlace-wikidata enlace-wikidata-reasonator">[https://reasonator.toolforge.org/?q=' .. itemId .. ' ' .. label .. ']</span>'
end

return p