Abrir menu principal

Módulo:Interface Wikidata

Revisão de 10h00min de 21 de abril de 2021 por Campari (discussão | contribs) (Criação do Módulo Interface Wikidata)
(dif) ← Edição anterior | Revisão atual (dif) | Versão posterior → (dif)


Descrição

Este módulo tem funções auxiliares para mostrar dados Wikidata com chamadas dentro de infocaixas e outras predefinições.

Uso

Outra documentação:


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