Módulo:Ficha de codificación de caracteres

Uso


local p = {}
local ModuloArgumentos = require('Módulo:Argumentos')
local ModuloFicha = require('Módulo:Ficha')    
local ModuloWikidata = require('Module:Wikidata')
local ModuloPaginas = require('Módulo:Páginas')
local elementoTabla = require('Módulo:Tablas').elemento
local argumentos
local Entidad

function p.Ficha(frame)
    argumentos = ModuloArgumentos.obtenerArgumentosConValor(frame)
    Entidad = mw.wikibase.getEntityObject(argumentos.id) or {}
    local Imagen = argumentos['imagen']
    local Pie
    if Imagen then
        Pie = argumentos['pie']
    else
        Imagen, Pie = obtenerImagenWikidata()
    end
    local Titulo = argumentos['título'] or obtenerEtiquetaWikidata() or ModuloPaginas.nombrePagina({desambiguar='sí'})
    local MIME = argumentos['mime'] or propiedad('P1163') or ""
    local Alias = argumentos['alias'] or propiedad('P742') or ""
    local Estandar = argumentos['estándar'] or propiedad('P361') or ""
    local Idioma = argumentos['idioma'] or propiedad('P407') or ""
    local Estado = argumentos['estado'] or ""
    local Anterior = argumentos['anterior'] or propiedad('P155') or ""
    local Siguiente = argumentos['siguiente'] or propiedad('P156') or ""
    local FichaCodigo = {
        entidad = argumentos.id,
        titulo  = Titulo,
        clasetitulo = 'informática',
        estilotitulo = 'background-color: #ccccff; color:#000;',
        estiloseccion = 'background-color: #ccccff; color:#000;',
        estiloetiqueta = 'background-color: #ddddff; width:35%',
        estilodatos = 'width:65%',
        imagen = Imagen,
        ['tamañoimagen'] = Tamano,
        pie = Pie,
        estilopie = 'font-size:88%',
        {'[[MIME Type]]', MIME},
        {'Alias', Alias},
        {'Estándar', Estandar},
        {'Idioma', Idioma},
        {'Estado', Estado},
        {'Anterior', Anterior},
        {'Siguiente', Siguiente},
    }
    return ModuloFicha.infobox(FichaCodigo)
end

function obtenerEtiquetaWikidata()
    if Entidad and Entidad.labels and Entidad.labels.es then
        return Entidad.labels.es.value
    end
end

function obtenerImagenWikidata()
    local imagen, valorImagen, piesDeImagen, k, pieDeImagen
    if not Entidad then
        return
    end
    --  Obtener la primera imagen en Wikidata de la persona
    local imagen = elementoTabla(Entidad, 'claims','P18',1)
    if not imagen then
        return
    end
    valorImagen =  elementoTabla(imagen, 'mainsnak','datavalue','value')
    piesDeImagen =  elementoTabla(imagen, 'qualifiers','P2096')
    -- Encontrar el pie en español
    if piesDeImagen then
        for k,pieDeImagen in pairs(piesDeImagen) do
            if pieDeImagen.datavalue.value.language == 'es' then
                return valorImagen, pieDeImagen.datavalue.value.text
            end
        end
    end
    -- Sin pie de imagen en español
    return valorImagen
end

function propiedad(idPropiedad,opciones)
    if Entidad and Entidad.claims and Entidad.claims[idPropiedad] then
        if not opciones then
            opciones = {['linkback']='sí'}
        end
        opciones.entityId  = Entidad.id
        opciones.propiedad = idPropiedad
        valorPropiedad = ModuloWikidata.getPropiedad(opciones,Entidad.claims[idPropiedad])
        return valorPropiedad
    end
end

return p