Módulo:Zona de pruebas/Miguillen/WikidataID

De Wikipedia, la enciclopedia libre
Icono de documentación de módulo Documentación del módulo[ver] [editar] [historial] [purgar]

A continuación se muestra la documentación transcluida desde la subpágina /doc. [salta a la caja de código]


Uso



Esta documentación está transcluida desde Módulo:Zona de pruebas/Miguillen/WikidataID/doc.
Por favor, añade las categorías en la subpágina de documentación y los interwikis en Wikidata. Subpáginas de este módulo.

-- Pruebas para accesos arbitrarios a elementos de Wikidata diferentes al que enlaza la página
-- Destinado a ser:
-- Uso : {{#invoke:Wikidata|getValueFromID|<ID>|<Property>|OBTENER_WIKIDATA}}
-- Ejemplo.: {{#invoke:Wikidata|getValueFromID|Q151973|P26|OBTENER_WIKIDATA}} - Para obtener el valor de «cónyuge» (P26) de Richard Burton (Q151973)
-- Mientras que en la zona de pruebas:
-- Uso : {{#invoke:Zona de pruebas/Miguillen/WikidataID|getValueFromID|<ID>|<Property>|OBTENER_WIKIDATA}}
-- Ejemplo.: {{#invoke:Zona de pruebas/Miguillen/WikidataID|getValueFromID|Q151973|P26|OBTENER_WIKIDATA}} - Para obtener el valor de «cónyuge» (P26) de Richard Burton (Q151973)
 
local p = {}
 
-- Esto se utiliza para obtener un valor o una lista de valores separados por comas si existen varios valores
p.getValueFromID = function(frame)
	local itemID = mw.text.trim(frame.args[1] or "") -- ID del elemento de Wikidata
	local propiedadID = mw.text.trim(frame.args[2] or "") -- Propiedad
	local parametroEntrada = mw.text.trim(frame.args[3] or "") -- Parámetro de entrada
	if parametroEntrada == "OBTENER_WIKIDATA" then
		local entidad = mw.wikibase.getEntity(itemID)
		local declaracion = entidad.claims[propiedadID]
		if declaracion then
			-- Se muestra la salida como wikienlace si existe el correspondiente artículo en la wiki
			if (declaracion[1] and declaracion[1].mainsnak.snaktype == "value" and declaracion[1].mainsnak.datavalue.type == "wikibase-entityid") then
				local salida = {}
				for k, v in pairs(declaracion) do
					local enlace = mw.wikibase.sitelink("Q" .. v.mainsnak.datavalue.value["numeric-id"])
					local etiqueta = mw.wikibase.label("Q" .. v.mainsnak.datavalue.value["numeric-id"])
					if etiqueta == nil then etiqueta = "Q" .. v.mainsnak.datavalue.value["numeric-id"] end
 
					if enlace then
						salida[#salida + 1] = "[[" .. enlace .. "|" .. etiqueta .. "]]"
					else
						salida[#salida + 1] = "[[:d:Q" .. v.mainsnak.datavalue.value["numeric-id"] .. "|" .. etiqueta .. "]]<abbr title='Artículo aún no  disponible en esta wiki'>[*]</abbr>"
					end
				end
				return table.concat(salida, ", ")
			else
				return entidad:formatPropertyValues(propertyID, mw.wikibase.entity.claimRanks).value
			end
		else
			return ""
		end
	else
		return parametroEntrada
	end
end
 
return p