Módulo:Interface Wikidata
Descrição
Este módulo é uma camada de interface para o Módulo:Infobox/Wikidata. Ele reexporta, por meio de fromLua, funções destinadas a outros módulos e fornece funções de quadro (frame) para chamadas a partir do wikitexto. A {{Valor Wikidata}} usa formatStatements deste módulo para obter e formatar declarações do Wikidata.
O módulo não deve ser confundido com o Módulo:Wd, usado pela atual {{Wikidata}}, nem com o Módulo:WikidataIB, que implementa outra interface para dados do Wikidata em infocaixas.
Histórico
O módulo deriva do módulo homônimo da Wikipédia em francês, criado em 19 de agosto de 2015 para separar do módulo principal do Wikidata as funções de interface usadas por outros módulos. A versão lusófona foi criada em 8 de agosto de 2018 como tradução da versão francesa então vigente.
A primeira versão local ainda carregava Módulo:Wikidata/Testes. No dia seguinte, o idioma padrão dos rótulos foi alterado de fr para pt. Depois da criação do Módulo:Infobox/Wikidata, traduzido de fr:Module:Wikidata, a interface passou a usá-lo como módulo de base em 13 de setembro de 2018. Seu código funcional permanece, desde então, essencialmente inalterado.
O comentário no código que associa formatStatements à {{Wikidata}} é histórico: essa predefinição foi inicialmente um redirecionamento para {{Valor Wikidata}}, mas passou a usar o Módulo:Wd em março de 2021.
Uso
Para uso em wikitexto, consulte {{Valor Wikidata}}. Para uso por outros módulos Lua, as funções de baixo nível são expostas pela tabela fromLua; sua implementação e seus parâmetros são documentados em Módulo:Infobox/Wikidata/doc.
Ver também
local p = {}
local d = require 'Módulo:Infobox/Wikidata'
-- funções que só podem ser chamadas de outro módulo
p.fromLua = {
-- manipulação de uma lista de afirmações
getClaims = d.getClaims,
stringTable = d.stringTable,
tableToText = d.tableToText,
formatStatements = d.formatStatements,
formatQualifiers = d.showQualifier,
formatAndCat = d.formatAndCat,
wikidataDate = d.wikidataDate,
addLinkback = d.addLinkBack,
addtrackingcat = d.addTrackingCat,
-- manipulação de uma afirmação individual
getmainid = d.getMainId,
formatStatement = d.formatStatement,
statementDate = d.getFormattedDate, -- obter a data dos qualificadores
getFormattedQualifiers = d.getFormattedQualifiers,
getQualifiers = d.getQualifiers,
getReferences = d.getReferences,
-- manipulação de snaks
getid = d.getId,
formatSnak = d.formatSnak,
-- utilização de qids
getEntity = d.getEntity,
formatEntity = d.formatEntity,
getLink = d.siteLink,
getLabel = d.getLabel, --getLabel é mais simples que formatEntity
-- uso de propriedades transitivas
isInstance = d.isInstance,
isSubclass = d.isSubclass,
addVals = d.addVals,
transitiveVals = d.transitiveVals,
inTransitiveVals = d.inTransitiveVals,
findVal = d.findVal,
-- gestão de datas
mainDate = d.mainDate,
getDate = d.getTheDate,
keyDate = d.keyDate,
-- Funções diversas
citeItem = d.citeitem,
translate = d.translate,
Dump = d.Dump,
}
-- Funções de quadro para uso do Wikitexto (às vezes com opções para manipular dados menos limpos
local function cleanargs(args)
local newargs = {}
for i, j in pairs(args) do
if j ~= '' then
newargs[i] = j
end
end
return newargs
end
function p.formatStatements( frame ) -- para [[Predefinição:Wikidata]]
local args = {}
if frame == mw.getCurrentFrame() then
args = frame:getParent().args -- chamando parâmetros do modelo (isso é realmente uma boa ideia?)
for k, v in pairs(frame.args) do
args[k] = v
end
else
args = frame
end
return p.fromLua.formatStatements( args )
end
function p.addLinkBack( frame )
local args = cleanargs(frame.args)
if args[1] and args[1]:match"%S" then
return d.addLinkBack( '', args.entity, mw.text.trim( args[1] ) )
end
end
function p.formatEntity(frame)
local args = cleanargs(frame.args)
local entity = args.entity or args[1]
if (not entity) or (entity == '') then
entity = mw.wikibase.getEntityObject()
end
return d.formatEntity(entity, args)
end
function p.formatAndCat(frame)
local args = cleanargs(frame.args)
return d.formatAndCat(args)
end
function p.citeItem(frame)
local args = cleanargs(frame.args)
local item, page = args[1], args['page']
return p.fromLua.citeItem(item, page)
end
function p.getLabel(frame)
local args = cleanargs(frame.args)
local item = args[1]
local lang = args[2] or "pt"
return d.getLabel(item, lang)
end
function p.mainDate(frame)
return d.mainDate(frame.args['entity'])
end
function p.Dump(frame)
return d.Dump(frame.args[1])
end
function p.formatQualifiers(frame)
local args = frame.args
return d.formatQualifiers(args)
end
function p.getDescription(frame) -- função simplista, mas boa, descrições Wikidata, não é super útil
return mw.wikibase.description(frame.args[1])
end
function p.getLink(frame)
local args = frame.args
local link, proj, lang = p.fromLua.getLink(args[1], args[2], args[3])
return link
end
function p.translate(frame)
return d.translate(frame.args[1])
end
function p.findVal(frame)
local args = frame.args
return d.findVal(args.source, args.target, args.property, args.recursion, args.instancedepth)
end
function p.transitiveVals(frame)
local args = frame.args
return d.transitiveVals(args.item, args, args.maxdepth, args.maxnodes, args.stopval, true)
end
return p