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