Módulo:Infobox/Funções

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

-- Funções comuns a diversas infobox
local localdata = require( 'Módulo:Infobox/Localdata' )
local wikidata = require( 'Módulo:Infobox/Wikidata' )
local coordfunctions  -- = require 'Módulo:Infobox/Funções/Geolocalização'
local p = {}

function p.title(icon, style, subtitleparam, subtitlequery)
    return {
        type = 'title',
        value = function()
            return localdata['nome']
                or wikidata.getLabel(localdata.item) and mw.language.getContentLanguage():ucfirst( wikidata.getLabel(localdata.item) )
                or mw.title.getCurrentTitle().text
        end,
        subtitle = function() return localdata[subtitleparam] end,
        wikidatasubtitle = subtitlequery,
        icon = icon,
        style = style,
    }
end

function p.mainimage(args, defaultimage)
    if type( args ) ~= 'table' then
        args = { cat = args, defaultimage = defaultimage }
    end
    return {
        type = 'images',
        imageparameters =  {'imagem', 'image'},
        defaultimages = args.defaultimage,
        defaultimagelink = 'Ajuda:Guia de edição/Como usar imagens',
        sizeparameter = 'imagem tamanho',
        uprightparameter = 'upright',
        defaultupright = args.upright,
        defaultsize =     args.size or args.tamanho,
        maintenancecat = args.cat or '!Artigos sem imagens',
        captionparameter = {'legenda', 'imagem_legenda', 'legenda_imagem' },
        altparameter = args.altparameter or 'alternative image',
        defaultalt = args.alt,
        defaultimagealt = args.defaultimagealt,
        wikidata = args.wikidata or {property = 'P18', 'P242'},
        numval = 1,
    }
end

function p.logo(upright)
    return {
        type = 'images',
        imageparameters =  {'logotipo'},
    --    defaultimage = {},
    --    maintenancecat =
        captionparameter = 'legenda_logotipo',
        property = 'P154',
        defaultupright = upright or '0.6',
        uprightparameter = 'upright logotipo',
        sizeparameter = 'tamanho_logotipo',
        numval = 1,
    }
end

function p.brazao(upright)
    return {
        type = 'images',
        imageparameters =  {'brazão'},
    --    defaultimage = {},
    --    maintenancecat =
        captionparameter = 'legenda_brazão',
        property = {'P94', 'P158'},
        defaultupright = upright or '0.3',
        uprightparameter = 'upright brazão',
        sizeparameter = 'tamanho brazão',
        numval = 1,
    }
end

function p.flag(upright)
    return {
        type = 'images',
        imageparameters =  {'imagem bandeira '},
    --  defaultimage = {},
    --  maintenancecat =
        captionparameter = 'legenda bandeira',
        property = 'P41',
        defaultupright = upright or '1',
        uprightparameter = 'upright bandeira',
        sizeparameter = 'tamanho bandeira',
        numval = 1,
    }
end

function p.sign(upright)
    return {
        type = 'images',
        imageparameters =  {'placa rodoviária'},
    --    defaultimage = {},
    --    maintenancecat =
        captionparameter = 'legenda placa rodoviária',
        property = 'P14',
        defaultupright = upright or '0.4',
        uprightparameter = 'upright placa rodoviária',
        sizeparameter = 'tamanho placa rodoviária',
        numval = 1,
    }
end

function p.bathymetricmap(upright)
    return {
        type = 'images',
        imageparameters =  {'mapa batimétrico', 'mapa', 'imagem_mapa'},
    --    defaultimage = {},
    --    maintenancecat =
        captionparameter = {'legenda mapa batimétrico', 'legenda_mapa', 'legenda mapa', 'mapa_legenda'},
        property = 'P207',
        defaultupright = upright, -- or '1',
        uprightparameter = 'upright mapa',
        sizeparameter = {'tamanho mapa', 'tamanho_mapa'},
        numval = 1,
    }
end

-- Ligações externas
function p.website(localparam) -- texto livre [http://example.org exemplo.org] ou url apenas localparam é o parâmetro usado historicamente no modelo do site (legado)
    return {
        type = 'mixed',
        label = 'Website',
        plurallabel = 'Websites',
        wikidata = function()
                local values, num = wikidata.formatAndCat {
                    entity = localdata.item,
                    displayformat = 'wraplinks',
                    conjtype = '<br />',
                    property = 'P856',
                    isinlang = 'pt',
                    rank = 'valid',
                    excludespecial = true, -- excludespecial porque pode haver "sem valor" marcado para o português, mas há um site em inglês
                    returnnumberofvalues = true,
                }
                if not values then
                    values, num = wikidata.formatAndCat {
                        entity = localdata.item,
                        displayformat = 'wraplinks',
                        conjtype = '<br />',
                        property = 'P856',
                        showlang = true,
                        excludespecial = true,
                        returnnumberofvalues = true,
                    }
                end
                return values, num
            end,
        value =
            function()
                local siteurl = localdata[localparam] or localdata['website'] or localdata['web_site'] or localdata['website oficial']
                local sitename = localdata['nome website']
                return require("Módulo:Weblink").makelink(siteurl, sitename)
            end,
    }
end

-- Som, pronunciação
function p.selectSound(prop)
    -- prioridade em português
    if wikidata.getClaims{entity = localdata, property = prop, qualifier = {'P407'}, qualifiervalue  = {'Q5146'} } then
        return {property = prop, qualifier = {'P407'}, qualifiervalue  = {'Q5146'} }
    end
    return {property = prop}
end

function p.prononciation()
    return {
        type             = 'images',
        style            = {['padding-top'] = '25px'},
        defaultcaption   = 'Pronunciação',
        captionparameter = 'legenda pronunciação',
        value             = 'pronunciação',
        defaultsize      = '280',
        wikidata         = p.selectSound('P443'),
        numval           = 1,
    }
end

-- Funções de geolocalização
function p.country(default)
    local coordfunctions = coordfunctions or require 'Módulo:Infobox/Funções/Geolocalização'
    return coordfunctions.country(default)
end

function p.geoloc(params)
    local coordfunctions = coordfunctions or require 'Módulo:Infobox/Funções/Geolocalização'
    return coordfunctions.geoloc(params)
end

function p.coordenadas(params)
    local coordfunctions = coordfunctions or require 'Módulo:Infobox/Funções/Geolocalização'
    return coordfunctions.coordenadas(params)
end

function p.locationmap(params)
    local coordfunctions = coordfunctions or require 'Módulo:Infobox/Funções/Geolocalização'
    return coordfunctions.locationmap(params)
end

return p