Módulo:Ficha de lugar ficticio

De Wikipedia, la enciclopedia libre
Icono de documentación de módulo Documentación del módulo[ver] [editar] [historial] [purgar]

A continuación se muestra la documentación transcluida desde la subpágina /doc. [salta a la caja de código]


Uso


Esta documentación está transcluida desde Módulo:Ficha de lugar ficticio/doc.
Por favor, añade las categorías en la subpágina de documentación y los interwikis en Wikidata. Subpáginas de este módulo.

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 ModuloWikidataFormatos = require('Módulo:Wikidata/Formatos')
local argumentos
local Entidad

function p.Ficha(frame)
    argumentos = ModuloArgumentos.obtenerArgumentosConValor(frame)
    Entidad = mw.wikibase.getEntity(argumentos.id) or {}
    local Titulo = argumentos['título'] or obtenerEtiquetaWikidata() or ModuloPaginas.nombrePagina({desambiguar='sí'})
    local Lema = argumentos['lema'] or propiedad('P1546')
    local ObraCreador
    local Obra = argumentos['obra'] or propiedad('P1441')
    local Creador = argumentos['autor'] or argumentos['creador'] or propiedad('P170')
    if Obra then
        if Creador then
            ObraCreador = "''" .. Obra .. "''" .. ' de ' .. Creador
        else
            ObraCreador = "''" .. Obra .. "''"
        end
    else
        if Creador then
            ObraCreador = 'De las obras de ' .. Creador
        else
            ObraCreador = ''
        end
    end
    local Bandera = argumentos['bandera'] or argumentos['Bandera'] or obtenerImagenWikidata('P41')
    local PieBandera
    if Bandera then
        PieBandera = 'Bandera'
    end
    local Escudo = argumentos['escudo'] or obtenerImagenWikidata('P94')
    local PieEscudo
    if Escudo then
        PieEscudo = 'Escudo'
    end
    local Imagen = argumentos['imagen'] or obtenerImagenWikidata('P18')
    if Imagen then
        Pie = argumentos['pie de imagen'] or argumentos['pie imagen'] or argumentos['pie'] or '' propiedad('P18', {['calificativo']='P2096'})
    end
    local Mapa = argumentos['mapa']
    local PieMapa
    if Mapa then
        PieMapa = argumentos['pie de mapa'] or argumentos['pie mapa'] or ''
    else
        if obtenerImagenWikidata('P242') then
            PieMapa = 'Localización de ' .. Titulo
        elseif obtenerImagenWikidata('P1621') then
            PieMapa = 'Mapa detallado de ' .. Titulo
        elseif obtenerImagenWikidata('P1943') then
            PieMapa = 'Mapa de situación de ' .. Titulo
        end
        Mapa = obtenerImagenWikidata('P242') or obtenerImagenWikidata('P1621') or obtenerImagenWikidata('P1943')
    end
    local Tamano = argumentos['tamaño de imagen'] or argumentos['tamaño_imagen'] or '280px'
    local Tipo
    local Episodio = argumentos['episodio'] or ''
    local Endonimo = argumentos['nombre original'] or propiedad('P1705') or ''
    local Seudonimo = argumentos['otros nombres'] or propiedad('P742') or ''
    local Significado = argumentos['significado del nombre'] or propiedad('P138') or ''
    local Localizacion = argumentos['localización'] or propiedad('P131') or propiedad('P706') or ''
    local Campo1N = argumentos['campo1_nombre'] or ''
    local Campo2N = argumentos['campo2_nombre'] or ''
    local Campo3N = argumentos['campo3_nombre'] or ''
    local Campo4N = argumentos['campo4_nombre'] or ''
    local Campo5N = argumentos['campo5_nombre'] or ''
    local Campo1 = argumentos['campo1'] or ''
    local Campo2 = argumentos['campo2'] or ''
    local Campo3 = argumentos['campo3'] or ''
    local Campo4 = argumentos['campo4'] or ''
    local Campo5 = argumentos['campo5'] or ''
    local Nacimiento = argumentos['nacimiento'] or propiedad('P885') or ''
    local Desembocadura = argumentos['desembocadura'] or propiedad('P403') or ''
    local Capital = argumentos['familia'] or propiedad('P36') or ''
    local Superficie = argumentos['superficie'] or propiedad('P2046', {['valor-función'] = ModuloWikidataFormatos.formatoArea, ['linkback']='sí'}) or ''
    local Fundacion = argumentos['fundación'] or propiedad('P571') or ''
    local Gobernante = argumentos['gobernante'] or propiedad('P6') or ''
    local Poblacion = argumentos['población'] or propiedad('P1082') or ''
    local Residentes = argumentos['residentes'] or ''
    local Lengua = argumentos['lengua'] or propiedad('P2936') or ''
    local Divisa = argumentos['moneda'] or propiedad('P38') or ''
    local Huso = argumentos['horario'] or propiedad('P421') or ''
    local Fronteras = argumentos['fronteras'] or propiedad('P47') or ''
    local Densidad
    if argumentos['densidad'] then
        Densidad = argumentos['densidad']
    elseif tonumber(Superficie) ~= nil and tonumber(Poblacion) ~= nil then
        Densidad = Poblacion/Superficie
    else
        Densidad = ''
    end
    if argumentos['tipo'] then
        Tipo = argumentos['tipo']
    elseif esUnValor(Entidad,'P31','Q1145276') then
        Tipo = 'País'
    elseif esUnValor(Entidad,'P31','Q1964689') then
        Tipo = 'Ciudad'
    elseif esUnValor(Entidad,'P31','Q6619693') then
        Tipo = 'Isla'
    elseif esUnValor(Entidad,'P31','Q7180622') then
        Tipo = 'Asentamiento fantasma'
    elseif esUnValor(Entidad,'P31','Q15720793') then
        Tipo = 'Edificio'
    elseif esUnValor(Entidad,'P31','Q3087542') then
        Tipo = 'Sietch'
    elseif esUnValor(Entidad,'P31','Q16363493') then
        Tipo = 'Bosque'
    elseif esUnValor(Entidad,'P31','Q16515166') then
        Tipo = 'Manantial'
    elseif esUnValor(Entidad,'P31','Q17199338') then
        Tipo = 'Continente'
    elseif esUnValor(Entidad,'P31','Q18948595') then
        Tipo = 'Calle'
    elseif esUnValor(Entidad,'P31','Q19595246') then
        Tipo = 'Imperio'
    elseif esUnValor(Entidad,'P31','Q19838114') then
        Tipo = 'Montaña'
    elseif esUnValor(Entidad,'P31','Q19838115') then
        Tipo = 'Paso de montaña'
    elseif esUnValor(Entidad,'P31','Q20080483') then
        Tipo = 'Cueva'
    elseif esUnValor(Entidad,'P31','Q20750954') then
        Tipo = 'Región'
    elseif esUnValor(Entidad,'P31','Q27055917') then
        Tipo = 'Archipiélago'
    elseif esUnValor(Entidad,'P31','Q29587254') then
        Tipo = 'Habitación'
    elseif esUnValor(Entidad,'P31','Q30106090') then
        Tipo = 'Establecimiento de bebidas'
    elseif esUnValor(Entidad,'P31','Q30322563') then
        Tipo = 'Llanura'
    elseif esUnValor(Entidad,'P31','Q32860792') then
        Tipo = 'Lugar de Pokémon'
    elseif esUnValor(Entidad,'P31','Q15709969') then
        Tipo = 'Lago'
    elseif esUnValor(Entidad,'P31','Q16338046') then
        Tipo = 'Río'
    elseif esUnValor(Entidad,'P31','Q16363579') then
        Tipo = 'Mar'
    elseif esUnValor(Entidad,'P31','Q727596') then
        Tipo = 'Cuadrante galáctico'
    elseif esUnValor(Entidad,'P31','Q2775969') then
        Tipo = 'Planeta'
    elseif esUnValor(Entidad,'P31','Q3972970') then
        Tipo = 'Sistema solar'
    elseif esUnValor(Entidad,'P31','Q17424291') then
        Tipo = 'Estrella'
    elseif esUnValor(Entidad,'P31','Q17424312') then
        Tipo = 'Sistema solar'
    elseif esUnValor(Entidad,'P31','Q17480853') then
        Tipo = 'Luna'
    elseif esUnValor(Entidad,'P31','Q17480908') then
        Tipo = 'Cinturón de asteroides'
    elseif esUnValor(Entidad,'P31','Q18011146') then
        Tipo = 'Constelación'
    elseif esUnValor(Entidad,'P31','Q19595266') then
        Tipo = 'Galaxia'
    else
        Tipo = ""
    end
    local TablaFicha = {
        entidad = argumentos.id,
        titulo  = capitalizar(Titulo),
        subtitulo = Lema,
        subtitulo2 = ObraCreador,
        clasetitulo = 'mapa',
        estilotitulo = 'background-color: rgba(128,128,128,.6); color:#000;',
        estilosubtitulo = 'background-color: rgba(128,128,128,.6); color:#000;',
        estiloseccion = 'background-color: rgba(128,128,128,.6); color:#000;',
        estiloetiqueta = 'background-color: rgba(128,128,128,.4); width:35%',
        estilodatos = 'width:65%',
        imagen = Imagen,
        ['tamañoimagen'] = Tamano,
        pie = Pie,
        imagen2 = Mapa,
        ['tamañoimagen'] = Tamano,
        pie2 = PieMapa,
        imagenizquierda = Bandera,
        ['tamañoimagenizquierda'] = '100px',
        pieizquierdo = PieBandera,
        imagenderecha = Escudo,
        ['tamañoimagenderecha'] = '100px',
        piederecho = PieEscudo,
        estilopie = 'font-size:88%',
        {tipo='sección',
            titulo = "Información",
            {'Tipo', Tipo},
            {'Episodio', Episodio},
            {'Nombre original', Endonimo},
            {'Otros nombres', Seudonimo},
            {'Significado del nombre', Significado},
            {'Localización', Localizacion},
            {'Nacimiento', Nacimiento},
            {'Desembocadura', Desembocadura},
            {'Capital', Capital},
            {'Superficie', Superficie},
            {'Fundación', Fundacion},
            {'Gobernante', Gobernante},
            {'Población', Poblacion},
            {'Residentes', Residentes},
            {'[[Divisa|Moneda]]', Divisa},
            {'Lengua', Lengua},
            {'[[Huso horario|Horario]]', Huso},
            {'Fronteras', Fronteras},
            {Campo1N, Campo1},
            {Campo2N, Campo2},
            {Campo3N, Campo3},
            {Campo4N, Campo4},
            {Campo5N, Campo5},
        }
    }
    return ModuloFicha.infobox(TablaFicha)
end

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

function obtenerImagenWikidata(idPropiedad)
    local imagen, valorImagen
    if not Entidad then
        return
    end
    --  Obtener la primera imagen en Wikidata de la persona
    local imagen = elementoTabla(Entidad, 'claims', idPropiedad, 1)
    if not imagen then
        return
    end
    valorImagen =  elementoTabla(imagen, 'mainsnak','datavalue','value')
    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

function esUnValor(entidad, idPropiedad, idaBuscar)
    if not entidad or not idPropiedad then
        return
    end
    local declaracion = elementoTabla(entidad, 'claims', idPropiedad)
    local idBuscado
    if not declaracion then
        return false
    end
    for k,v in pairs(declaracion) do
        idBuscado = elementoTabla(v,'mainsnak','datavalue','value','id')
        if idBuscado == idaBuscar then
            return true
        end
    end
    return false
end

function capitalizar(cad)
    return string.upper(string.sub(cad,1,1)) .. string.sub(cad,2)
end

return p