Módulo:WikidataCheck

A documentação para este módulo pode ser criada na página Módulo:WikidataCheck/doc

local p = {}
function p.wikidatacheck(frame)
				local pframe = frame:getParent()
				local config = frame.args -- os argumentos passados PELA predefinição, no wikitexto da própria predefinição
				local args = pframe.args -- os argumentos passados PARA a predefinição, no wikitexto que transclui a predefinição
				
				local property = config.property
				local value = config.value or ""
				local catbase = config.category
				local namespaces = config.namespaces
				local ok = false -- marcação de uma só forma para verificar se está em um bom namespace
				local ns = mw.title.getCurrentTitle().namespace
				for v in mw.text.gsplit( namespaces, ",", true) do
								if tonumber(v) == ns then
												ok = true
								end
				end
				if not ok then -- não está um dos namespaces aprovados
								return ""
				end
				local entity = mw.wikibase.getEntityObject()
				if not entity then -- sem item do Wikidata
								return "[[Categoria:!" .. catbase .. " que não está no Wikidata]]"
				end
				local claims = entity.claims or {}
				local hasProp = claims[property]
				if not hasProp then -- nenhuma reivindicação desta propriedade
								return "[[Categoria:!" .. catbase .. " que não está no Wikidata]]" -- ruim. Os bots precisam adicionar a propriedade
				end
				local propValue = hasProp[1].mainsnak.datavalue.value -- Esta deve, eventualmente, iterar sobre todos os valores possíveis?
				if value == "" then
								return nil -- Usando o Wikidata
				elseif propValue == value then
								return "[[Categoria:!" .. catbase .. " igual ao Wikidata]]" -- yay!
				else
								return "[[Categoria:!" .. catbase .. " diferente do Wikidata]]" -- necessita de revisão humana :(
				end
end
return p