Módulo:Zona de pruebas/Miguillen/Ficha de entidad geopolítica

De Wikipedia, la enciclopedia libre
Este módulo no tiene página de documentación[crear]
--
-- Este módulo es para implementar en {{Ficha de entidad subnacional), {{Ficha de localidad), {{Ficha de país) y {{Ficha de barrio)
--
 
local p = {}  
local Ficha = require('Módulo:Ficha')
local Wikidata = require ('Módulo:Ficha/Wikidata')
local declaraciones = Wikidata.getDeclaraciones()
local Parse = require ('Módulo:Formatos')
local args 
local ParametrosFicha = {} 
local marco
local function getArgNums(prefix)
--Esta sentencia reconoce sufijos numéricos en los parámetros para poder crear bucles a partir de ellos.
    local nums = {}
    for k, v in pairs(args) do
        local num = tostring(k):match('^' .. prefix .. '([1-9]%d*)$')
        if num then 
             table.insert(nums, tonumber(num)) 
        end
    end
    table.sort(nums)
    return nums
end

function wikidata(propiedad,enlace,separador,modulo,funcion,calificador,propiedadValor)
    return Wikidata.getDeclaracion(declaraciones, propiedad, separador, modulo, funcion, calificador, enlace,nil,propiedadValor) 
end 

function wd(propiedad,enlace,separador,modulo,funcion,propiedadValor)
    return wikidata(propiedad,enlace,separador,modulo,funcion,nil,propiedadValor) 
end

function clf(propiedad,calificador,separador)
    
   return wikidata(propiedad,nil,separador,nil,nil,calificador)
end

function alias(valor)
    local listaAlias = {}
    local dev = {}
        listaAlias['nombre'] = {args['nombre'], args['nombre_oficial'], args['nombre_completo'],
            mw.ustring.gsub(mw.title.getCurrentTitle().text,'%s%(.*%)','') } -- título si coletilla
        listaAlias['imagen'] = {args['imagen'], wd('P18') }
        listaAlias['escudo'] = {args['escudo'], args['imagen_escudo'], wd('P94')}
        listaAlias['articulo_bandera'] = {args['artículo bandera'], wd('P163','no')}
        listaAlias['articulo_escudo'] = { args['artículo escudo'], wd('P237','no')}
        listaAlias['bandera'] = {args['bandera'], args['imagen_bandera'], wd('P41')}
        listaAlias['unidad'] = {args['unidad'], wd('P31')}
        listaAlias['pais'] = {args['pais'], args['país'], wd('P17','no')}
        listaAlias['capital'] = {args['capital'],wd('P36')}
        listaAlias['capital_coord'] = {args['capital_coord'], clf('P36','P625')}
        listaAlias['tiposuperiores'] = {si(args['superior_1'], apartados('tipo_superior_', '• '))}
        listaAlias['superiores'] = {si(args['superior_1'], apartados('superior_', ''),wd('P131','sí','<br>','Wikidata/Formatos','formatFicha'))}
        listaAlias['idioma'] = {args['idioma'], args['idiomas'],
            args['lengua'], args['idiomas_oficiales'],wd('P37')}
        listaAlias['idioma_cooficial'] = {args['idiomas_co-oficiales'], args['idiomas co-oficiales']}
        listaAlias['otros_idiomas'] = {args['otros_idiomas'], args['otros idiomas']}
        listaAlias['dirigentes_títulos'] = {args['dirigentes_títulos'] ,wd('P6','sí','<br>&bull;&nbsp; ','Wikidata/Formatos' ,'formatId' ,'P39'), 'Dirigentes'}
        listaAlias['dirigentes_nombres'] = {args['dirigentes_nombres'],wd('P6')}
        listaAlias['fronteras'] = {args['fronteras'],wd('P47','','<br>')}
        listaAlias['poblacion'] = {args['población'], args['poblacion'], wd('P1082','no')}
        listaAlias['censo'] = {args['censo'], args['población_año'], args['poblacion_año'], clf('P1082','P585')}
        listaAlias['altitud'] = {args['altitud'] , args['elevación media'], args['elevación_media']}
        listaAlias['altitud_max'] = {args['altitud_max'] , args['elevación alta'], args['elevación_alta']}
        listaAlias['altitud_min'] = {args['altitud_min'] , args['elevación baja'], args['elevación_baja']}
        listaAlias['densidad'] = {args['población_densidad'], args['densidad']}
        listaAlias['PIB_per_capital'] = {args['PIB_per_cápita'], args['PIB per cápita'], args['PIB_per_capita'],
            args['PIB per capita']}
        listaAlias['PIB_puesto'] = {args['PIB_puesto'], args['PIB puesto']}
        listaAlias['código_postal_nombre'] = {args['código_postal_nombre'], args['código postal nombre'],
            '[[Código postal]]'}
        listaAlias['código_postal'] = {args['código_postal'], args['código postal'], args['cp'],
            args['secciones_y_código_postal'],wd('P281')} 
        listaAlias['prefijo_telefónico_nombre'] = {args['prefijo_telefónico_nombre'],
            args['prefijo telefónico nombre'],'[[Anexo:Prefijos telefónicos internacionales|Prefijo telefónico]]'}
        listaAlias['prefijo_telefónico'] = {args['prefijo_telefónico'], args['prefijo telefónico'],
            args['prefijo'], args['código_telefónico'],wd('P473') } 
        listaAlias['matrícula_autos_nombre'] = {args['matrícula_autos_nombre'],
            args['matricula_autos_nombre'],'[[Matrícula (automóviles)|Matrícula]]'} 
        listaAlias['matrícula_autos'] = {args['matrícula_autos'], args['matricula_autos']} 
        listaAlias['código_ISO'] = {args['código_ISO'], args['código ISO'],wd('P300')}
        listaAlias['horario'] = {args['horario'],wd('P421')} 
        listaAlias['nombre_código1'] = {args['nombre_código1'], args['tipo_código1'],'Código'}
        listaAlias['nombre_código2'] = {args['nombre_código2'], args['tipo_código2'],'Código'} 
        listaAlias['código1'] = {args['código1'], args['código']}
        listaAlias['fiestas'] = {args['fiestas'], args['fiestas_mayores']}
        listaAlias['web'] = {args['página web'], args['web']}
        listaAlias['web2'] = {args['página web2'], args['web2']}
                    
    if listaAlias[valor]  then
        dev = listaAlias[valor]
       return dev[next(dev)]
    end
end
function si (operador,verdadero, falso)
-- función auxiliar que establece un operador ternario en la tabla principal
     if operador then 
        return verdadero
     elseif falso then
        return falso
     end
end 
function concatenar(a,...)
--Función auxiliar para concatenar posibles valores nulos en la tabla principal sin que de error
   local s = {a,...}
   local valorNulo = false
   local nCadenas = #s
   for i = 1,nCadenas, 1 do
       if s[i] == nil then
            valorNulo = true
       end
   end
   if not valorNulo then
       return table.concat(s)
   end
end

function num(numero)
--Función auxiliar para depurar los números. Elimina caracteres no numéricos y covierte el string en número. 
    local depurar = string.gsub(string.gsub(numero,',','.'),'&nbsp;','') 
    local num = tonumber(depurar)
    return num
end

function dividir(dividendo,divisor)
-- Función auxiliar para dividir valores en la tabla principal sin que de error si uno o los dos valores son nulos    
    local cociente ={}
    local resultado = {}
    if dividendo and divisor then
        if type(num(dividendo)) == 'number' and type(num(divisor)) == 'number' then
           cociente = num(dividendo)/num(divisor)
           resultado = formatnum(math.floor((cociente * 100) + 0.5) / 100)
           return resultado
        else 
           return '<strong class="error">Formato no válido</strong>'
        end
    end
end

function formatnum(numero)
--Función auxiliar para dar a los numeros el formato con separador de millares y decimales de acuerdo al manual de estilos
local fn = {}
    if numero then
        if type(num(numero)) == 'number' then
            fn = mw.language.new('es'):formatNum(num(numero))
            return fn
        else
            return '<strong class="error">Formato no válido</strong>'
        end
    end
end

function mapaLoc(sufijo)
-- Genera los mapas de localización con la Plantilla:Mapa de localización. 
-- El sufijo debe ser dado en la tabla principal de este módulo 
-- de forma que si se pone mapaLoc('') no añadiría sufijo (mapa_loc) y si se pone mapaLoc('_1') sería mapa_loc_1.

    local mapaLoc = {}
     
    if args.mapa_loc_1 or args.mapa_loc then

        if args['mapa_alternativo'] or args['mapa_alternativo_1']then 
            alternativo = args['mapa_alternativo'.. sufijo]
        end
    return           
        marco:expandTemplate{
            title = 'mapa de localización',
            args = {
                args['mapa_loc' .. sufijo],
                ['etiqueta'] = alias('nombre'),
                ['marca'] = args['imagen_marca_loc'] or 'Red pog.svg',
                ['tamaño_marca'] = args['tam_marca_loc'] or '5',
                ['alineación'] ='center',
                ['pie'] = 'no',
                ['mapa_alternativo']  =  alternativo ,
                ['borde']  = 'none',
                ['posición']  = args['pos_etiqueta_loc'] 
          }
      }
  end
end

function coordenadas()
-- Genera las coordenadas dadas en por parámetros latd, lat, longd ... a partir del Módulo:Coordenas. 
-- Compatible con formatos: deg (grados con decimales sin posición), d (grados con posición), 
-- dm (grados, minutos con posición) y dms (grados, minutos y segundos con posición)
    if wd('latitud') and wd('longitud') then
        return  '<span style="white-space:nowrap">' .. wd('P625') .. '</span>'
    -- elseif args['latitud'] and args['longitud'] then
    --   return
    --        '&bull;&nbsp;[[Latitud]]: ' .. args['latitud'] ..'<br>&bull;&nbsp;[[Longitud]]: ' .. args['longitud']  
    end
end

function apartados(prefijo, separador)
-- Función auxiliar. Genera filas a partir del mismo prefijo más un sufijo numérico.
    if args[prefijo] then --Igualamos prefijo con prefijo1
        args[prefijo ..'1'] = args[prefijo]
    end
         
   local valores = getArgNums(prefijo) --damos valor al prefijo en la función getArgNums       
   local parametro = {} 
 
   for k, num in ipairs(valores) do  
       parametro[num] = separador .. args[prefijo.. num ]    
   end 
   return   table.concat (parametro,'<br>') --Devuelve todos los valores de la tabla numerada separados por <br>                        
end 

function distancias()
-- Lo mismo que la función apartados pero en este caso genera paralelamente args.referencia por el mismo sistema.
    if args.distancia then --Igualamos distancia con distancia1
        args.distancia1 = args.distancia
    end
      
    if args.referencia then
        args.referencia1 = args.referencia -- Igualamos referencia1 con referencia
    end
        
    local distancianumero = getArgNums('distancia') --damos valor al sufijo en la función getArgNums       
    local distancia = {} 

    for k, num in ipairs(distancianumero) do 
--Esta sentencia crea una tabla numerada (distancia) con cada distanciaN dada asignándole el valor que debe aparcer
        distancia[num] = args['distancia'.. num ] .. ' [[kilómetro|km]] a '.. args['referencia' .. num]   
    end 
    return   table.concat (distancia,'<br>') --Devuelve todos los valores de la tabla numerada separados por <br>                        
end

function parametros()
--Genera los parámetros del la ficha dándole valores a los argumentos del Módulo:Ficha           
    ParametrosFicha =  {--Tabla principal  
        clase = "geography vcar",
        tipocabecera = 'mapa fn org',
        estilotitulo = 'padding:0',
        estilosubtitulo1 = 'font-size:100%; font-weight:bold; background-color:#cddeff',
        estiloetiqueta = 'padding:1px 8px',
        estilodatos = 'padding:1px 8px 1px 1px',   
        titulo = alias('nombre'),
        --estiloarriba = 'font-size:smaller',
        arriba = args['nombre original'],
        subtitulo = si(alias('pais') and alias('pais') ~= '' and alias('unidad') and alias('unidad') ~= '',
        concatenar( alias('unidad'), '&nbsp;', marco:preprocess(concatenar('{{ de país|', alias('pais'), '|link=auto}}')))),
        imagenizquierda = si(alias('bandera') ~= 'no', alias('bandera') or 'Flag of None.svg'),
        imagenderecha = si(alias('escudo') ~= 'no', alias('escudo') or 'Coat of arms of None.svg'),
        estilopieizquierdo = 'font-size:smaller; font-weight:bold',
        pieizquierdo = si(alias('articulo_bandera') and alias('articulo_bandera') ~= '', concatenar('[[',alias('articulo_bandera'),'|Bandera]]'),'Bandera'),
        estilopiederecho = 'font-size:smaller; font-weight:bold',
        piederecho =  si(alias('articulo_escudo') and alias('articulo_escudo') ~= '' , concatenar('[[', alias('articulo_escudo'),'|Escudo]]'),'Escudo'),
        ['tamañoimagenizquierda'] = args['tamaño_bandera'] or '100x78px',
        ['tamañoimagenderecha'] = args['tamaño_escudo'] or '88x88px',
        ['tamañoimagensuperior'] = args['tamaño_mapa'] or '245px',
        ['tamañoimagen'] = args['tamaño_imagen'] or '245px',
        ['tamañoimagen1'] = args['tamaño_imagen1'] or '245px', 
        ['tamañoimageninferior'] = args['imageninferior_tamaño'] or '245px',
        imagensuperior = alias('imagen'),
        estilopiesuperior = 'font-size:smaller; font-weight:bold',
        piesuperior = args['pie_de_imagen'],
        estilodatosup1 = 'text-align:center',
        datosup1  = si(args['apodo'], 
                       concatenar('[[Apodo|Otros nombres]]: <span style="font-style:italic">', 
                           args['apodo'], '</span>')),
        estilodatosup2 = 'text-align:center',
        datosup2 = si(args['lema'], 
                       concatenar('[[Anexo:Lemas de Estado|Lema]]: ', args['lema'])),
        estilodatosup3 = 'text-align:center',
        datosup3 =  si(args['himno'], 
                        concatenar('[[Himno]]: ', args['himno'])),
        estilodatosup4 = 'border:0; text-align:center',
        datosup4 =  si( args['archivo_himno'], 
                       concatenar('[[Archivo:', 
                           args['archivo_himno'], 
                           '|140px|center|noicon]]<div style="line-height:1.1em; text-align:center; font-size:smaller;" class="problemas_sonido">\'\'[[Ayuda:Multimedia|¿Problemas al reproducir este archivo?\]\]\'\'</div>')),
        estilodatosup5 = 'textalign:center',
        estiloimagen = 'padding:0.8em 0.7em; text-align:center',
        imagenflotante1 = 'si', 
        imagenflotante2 = 'si',
        imagenflotante3 = 'si',
        imagen1 = si(wd('latitud') and wd('latitud') ~= '',mapaLoc('')),
        imagen2 = si(wd('latitud') and wd('latitud') ~= '', mapaLoc('_1')),
        imagen3 = args['mapa'],
        estilopie = 'font-size:smaller; font-weight:bold',
        pie1 =si(args['mapa_loc'] and alias('nombre'),concatenar('Ubicación de ',alias('nombre'),' en ',args['mapa_loc'])),
        pie2  = si(args['mapa_loc_1'] and alias('nombre'),concatenar('Ubicación de ',alias('nombre'),' en ',args['mapa_loc_1'])),
        pie3 = args['piemapa'],
        estilodatos2 = 'white-space:nowrap;padding:0px 1px 1px 1px',
        estiloetiqueta2 = 'font-size:100;padding:0px 7px',
        etiqueta2 = '[[Coordenadas geográficas|Coordenadas]]',
        datos2 = si(wd('latitud') and wd('latitud') ~= '', coordenadas()),
        etiqueta3 = '[[Capital (política)|Capital]]',
        datos3 = alias('capital'),
        estiloetiqueta4 = 'border:0;font-weight:100;font-size:90%;padding:0px 7px',
        estilodatos4 = 'border:0;font-size:90%;padding:0px 1px 0px 1px',
        etiqueta4 = '&bull;&nbsp;Población',
        datos4 = si(args['capital'] and args['capital_población'], args['capital_población']),
        estiloetiqueta5 ='border:0;font-weight:100;font-size:90%;padding:0px 7px', 
        estilodatos5 = 'border:0;font-size:90%;padding:0px 1px 0px 1px',
        etiqueta5 = '&bull;&nbsp;[[Coordenadas geográficas|Coordenadas]]',
        datos5 = si(alias('capital') and alias('capital_coord'), alias('capital_coord')),
                     --concatenar(args['coor URL'],'&nbsp;', args['capital_coord'])),
        estiloetiqueta6 ='border:0;font-weight:100;font-size:90%;padding:0px 7px', 
        estilodatos6 = 'border:0;font-size:90%;padding:0px 1px 0px 1px',
        etiqueta6 = '&bull;&nbsp;Ciudad más poblada',
        datos6 = si(alias('capital') == args['ciudad_grande'], args['ciudad_grande']),
        etiqueta7 = 'Idioma oficial',
        datos7 = alias('idioma'),
        estiloetiqueta8 = 'border:0;font-weight:100;padding:0px 7px',
        estilodatos8 = 'border:0;font-weight:100;padding:0px 1px 1px 1px',
        etiqueta8 = '&bull;&nbsp;Co-oficiales',
        datos8 = alias('idioma_cooficial'),
        estiloetiqueta9 = 'border:0;font-weight:100;padding:0px 7px',
        estilodatos9 = 'border:0;font-weight:100;padding:0px 1px 1px 1px',
        etiqueta9 = '&bull;&nbsp;Otros idiomas',
        datos9 = alias('otros_idiomas'),
        etiqueta10 = '[[Entidad subnacional|Entidad]]',
        datos10 = alias('unidad'),
        estiloetiqueta11 = 'border:0;font-weight:100;padding:0px 7px',
        estilodatos11 = 'border:0;font-weight:100;padding:0px 1px 0px 1px',
        etiqueta11 = '&bull;&nbsp;[[Anexo:Países|País]]',
        datos11 = si(alias('pais') and alias('pais') ~= '', 
                     marco:preprocess(concatenar('{{bandera2|', alias('pais'), '}}'))),
        estiloetiqueta12 = 'border:0;font-weight:100;padding:0px 7px',
        etiqueta12 = alias('tiposuperiores'),
        estilodatos12 = 'border:0;font-weight:100;padding:0px 1px 1px 1px',
        datos12 = alias('superiores'),  
        etiqueta13 = alias('dirigentes_títulos'),
        datos13 = si(args['dirigente1'],'&nbsp;', alias('dirigentes_nombres')),
        estiloetiqueta14 = 'border:0;font-weight:100;padding:0px 7px',
        estilodatos14 = 'border:0;padding:0px 1px 1px 1px',
        etiqueta14 = concatenar('&bull;&nbsp;', si( args['dirigente1_cargo'], args['dirigente1_cargo'], 'Dirigente'), si(args['dirigente1_año'],
                 concatenar('&nbsp;<span style="font-weight:normal; font-size:90%">(',
                  args['dirigente1_año'], ')</span>'))),
        datos14 = args['dirigente1'],
        estiloetiqueta15 = 'border:0;font-weight:100;padding:0px 7px',
        estilodatos15 = 'border:0;padding:0px 1px 1px 1px',
        etiqueta15 = '&bull;&nbsp;[[Coalición|Partidos gobernantes]]',
        datos15 = args['partidos_gobernantes'],
        estiloetiqueta16 = 'border:0;font-weight:100;padding:0px 7px',
        estilodatos16 = 'border:0;padding:0px 1px 1px 1px',
        etiqueta16 = concatenar('&bull;&nbsp;Escaños', si(args['partidos'],concatenar('<br/>',args['partidos']))),
        datos16 = args['escaños'],
        etiqueta17 = 'Subdivisiones',
        datos17 = args['subdivisión'],
        estiloetiqueta18 = 'border:0;font-weight:100;padding:0px 7px',
        estilodatos18 = 'border:0;font-weight:100;padding:0px 1px 1px 1px',
        etiqueta18 = apartados('tipo_div_', '&bull;&nbsp;'),   
        datos18 = apartados('div_', ''),    
        etiqueta19 = si(args['fundación'] or args['erección'] or args['fecha_de_creación'],
                        'Eventos históricos', 'Fundación'),
        datos19 = si(args['fundación'] or args['erección'] or args['fecha_de_creación'],'&nbsp;'),
        etiqueta20 = args['fundación_hitos'],
        datos20 = args['fundación_fechas'],
        estiloetiqueta21 = 'border:0;font-weight:100;padding:0px 7px',
        estilodatos21 = 'border:0;padding:0px 1px 1px 1px',
        etiqueta21 = '&bull;&nbsp;Fundación',
        datos21 = si(args['fundación'] ~= nil and args['fundador'] ~= nil,concatenar(args['fundación'],
                      '&nbsp;<span style="font-size:90%">(',args['fundador'],')</span>'),args['fundación']),
        estiloetiqueta22 = 'border:0;font-weight:100;padding:0px 7px',
        estilodatos22 = 'border:0;padding:0px 1px 1px 1px',
        etiqueta22 = '&bull;&nbsp;Erección',
        datos22 = args['erección'],
        estiloetiqueta23 = 'border:0;font-weight:100;padding:0px 7px',
        estilodatos23 = 'border:0;padding:0px 1px 1px 1px',
        etiqueta23 = '&bull;&nbsp;Creación',
        datos23 = args['fecha_de_creación'],
        estiloetiqueta24 = 'border:0;font-weight:100;padding:0px 7px',
        estilodatos24 = 'border:0;padding:0px 1px 1px 1px',
        etiqueta24 = '&bull;&nbsp;Nombre',
        datos24 = args['nombre_fundación'],
        etiqueta25 = '[[Área|Superficie]]',
        datos25 = si(args['superficie_puesto'],
             concatenar('Puesto ', args['superficie_puesto'], '.º'),
                 si(args['número_entidades'],concatenar('&nbsp;de ',args['número_entidades']),
                    si(args['superficie'] or args['superficie_tierra'] or args['superficie_agua'] or args['fronteras'],
           '&nbsp;')) ),
        estiloetiqueta26 = 'border:0;font-weight:100;padding:0px 7px',
        estilodatos26 = 'border:0;font-weight:100;padding:0px 1px 1px 1px',
        etiqueta26 = '&bull;&nbsp;Total',
        datos26 = si(args['superficie'],concatenar(formatnum(args['superficie']),' [[kilómetro cuadrado|km²]]')),
        estiloetiqueta27 = 'border:0;font-weight:100;padding:0px 7px',
        estilodatos27 = 'border:0;font-weight:100;padding:0px 1px 1px 1px',
        etiqueta27 = '&bull;&nbsp;Tierra',
        datos27 = si(args['superficie'] and args['superficie_tierra'],
                      concatenar(formatnum(args['superficie_tierra']),' km²')),
        estiloetiqueta28 = 'border:0;font-weight:100;padding:0px 7px',
        estilodatos28 = 'border:0;font-weight:100;padding:0px 1px 1px 1px',
        etiqueta28 = '&bull;&nbsp;Agua',
        datos28 = si(args['superficie'] and args['superficie_agua'],
              concatenar(formatnum(args['superficie_agua']),' km²')),
        estiloetiqueta29 = 'border:0',
        estilodatos29 = 'border:0;padding:0px 1px 1px 1px',
        etiqueta29 = '[[Frontera]]s',
        datos29 = alias('fronteras'),
        etiqueta30 = '[[Altitud]]',
        datos30 = si(alias('altitud') or alias('altitud_max') or alias('altitud_min'),'&nbsp;'),
        estiloetiqueta31 = 'border:0;font-weight:100;padding:0px 7px',
        estilodatos31 = 'border:0;font-weight:100;padding:0px 1px 1px 1px',
        etiqueta31 = '&bull;&nbsp;Media',
        datos31 = si(alias('altitud'), concatenar(alias('altitud'),'&nbsp;msnm')),  
        estiloetiqueta32 = 'border:0;font-weight:100;padding:0px 7px',
        estilodatos32 = 'border:0;font-weight:100;padding:0px 1px 1px 1px',
        etiqueta32 = '&bull;&nbsp;Máxima',
        datos32 = si(alias('altitud_max'), concatenar(alias('altitud_max'),'&nbsp;msnm')),
        estiloetiqueta33 = 'border:0;font-weight:100;padding:0px 7px',
        estilodatos33 = 'border:0;font-weight:100;padding:0px 1px 1px 1px',
        etiqueta33 = '&bull;&nbsp;Mínima',
        datos33 = si(alias('altitud_min'), concatenar(alias('altitud_min'),'&nbsp;msnm')),
        etiqueta34 = si(args[distancia2],'[[Distancia]]s','[[Distancia]]'),
        datos34 = distancias(),
        etiqueta35 = '[[Clima]]',
        datos35 = args['clima'],
        etiqueta36 = '[[Curso de agua]]',
        datos36 = args['curso_de_agua'],
        etiqueta37 = concatenar('[[Población]]&nbsp;(', alias('censo'),')', args['población_notas']),
        datos37 = si(args['población_puesto'], 
                      concatenar('Puesto&nbsp;', args['población_puesto'],
                      si(args['número_entidades'],concatenar('&nbsp;de ', args['número_entidades']))),
                      si(alias('poblacion') and alias('poblacion') ~= '','&nbsp;')),
        estilodatos38 = 'border:0;font-weight:100;padding:0px 1px 1px 1px',
        estiloetiqueta38 = 'border:0;font-weight:100;padding:0px 7px',
        etiqueta38 = '&bull;&nbsp;Total',
        datos38 = si(alias('poblacion') and alias('poblacion') ~= '', concatenar(formatnum(alias('poblacion')), si(args['hab']~='no','&nbsp;hab.'))), 
        estiloetiqueta39 = 'border:0;font-weight:100;padding:0px 7px',
        estilodatos39 = 'border:0;font-weight:100;padding:0px 1px 1px 1px',
        etiqueta39 = '&bull;&nbsp;Hombres',
        datos39 = formatnum(args['población_h']),
        estiloetiqueta40 = 'border:0;font-weight:100;padding:0px 7px',
        estilodatos40 = 'border:0;font-weight:100;padding:0px 1px 1px 1px',
        etiqueta40 = '&bull;&nbsp;Mujeres',
        datos40 = formatnum(args['población_m']),
    	estiloetiqueta41 = 'border:0;font-weight:100;padding:0px 7px',
        estilodatos41 = 'border:0;font-weight:100;padding:0px 1px 1px 1px',
        etiqueta41 = '&bull;&nbsp;[[Densidad de población|Densidad]]',
        datos41 = si(alias(densidad), 
                      concatenar(alias(densidad),'hab/km²', args['densidad_post']),
                          si(alias('poblacion') and args['superficie'],
                              concatenar(dividir(alias('poblacion'), args['superficie']),
                                   '&nbsp;hab/km²', args['densidad_post']))),
        estiloetiqueta42 = 'border:0;font-weight:100;padding:0px 7px',
        estilodatos42 = 'border:0;padding:0px 1px 1px 1px',
        etiqueta42 = '&bull;&nbsp;Crec.intercensal',
        datos42 = si( args['población'] or args['poblacion'],
                      si( args['crecimiento_intercensal'] ,
                            concatenar(args['crecimiento_intercensal'],'%'))),
        estiloetiqueta43 = 'border:0;font-weight:100;padding:0px 7px',
        estilodatos43 = 'border:0;padding:0px 1px 1px 1px',
        etiqueta43 = '&bull;&nbsp;Pobl. urbana',
        datos43 = si(alias('poblacion') and alias('poblacion') ~= '',  
                      si(args['población_urb'], concatenar(formatnum(args['población_urb']), '&nbsp;hab.'))),
        estiloetiqueta44 = 'border:0;font-weight:100;padding:0px 7px',
        estilodatos44 = 'border:0;padding:0px 1px 1px 1px',
        etiqueta44 = '&bull;&nbsp;Pobl. metropolitana',
        datos44 = si(alias('poblacion') and alias('poblacion') ~= '',
                      si(args['población_met'], concatenar(formatnum(args['población_met']), '&nbsp;hab.'))),
        estiloetiqueta45 = 'border:0;font-weight:100;padding:0px 7px',
        estilodatos45 = 'border:0;padding:0px 1px 1px 1px',
        etiqueta45 = '&bull;&nbsp;[[Extranjero]]s',
        datos45 = si(alias('Poblacion'), args['población_extranjera']),
        estiloetiqueta46 = 'border:0',
        estilodatos46 = 'border:0;padding:0px 1px 1px 1px',
        etiqueta46 = 'Distribución por edades',
        datos46 = si(args['rango_pob1'],
                      si(args['distribución_pob_fecha'],
                          concatenar('<span style="font-size:smaller;font-weight:bolt">(',
                              args['distribución_pob_fecha'],')</span>'),'&nbsp;')),
        estiloetiqueta47 = 'border:0;font-weight:100;padding:0px 7px',
        estilodatos47 = 'border:0;padding:0px 1px 1px 1px',
        etiqueta47 = apartados('título_rango_pob', '&bull;&nbsp;'),
        datos47 = apartados('rango_pob', ''),
        etiqueta48 = '[[Gentilicio]]',
        datos48 = args['gentilicio'],
        etiqueta49 = si(args['PIB tipo'],args['PIB tipo'],'[[Producto Interno Bruto|PIB]] (nominal)'),
        datos49 = concatenar(si(alias('PIB_puesto'), concatenar('Puesto&nbsp;', alias('PIB_puesto'),'.º')), 
                      si(args['número_entidades'], concatenar('&nbsp;de ', args['número_entidades'])),
                          si(alias('PIB_per_capital'),'&nbsp;')),
        estiloetiqueta50 = 'border:0;font-weight:100;padding:0px 7px',
        estilodatos50 ='border:0;padding:0px 1px 1px 1px',
        etiqueta50 = concatenar('&bull;&nbsp;Total', 
                        si(args['PIB año'], concatenar('<span style="font-size:90%">&nbsp;(',
                            args['PIB año'], ')</span>'))),
        datos50 = args['PIB'],
        estiloetiqueta51  = 'border:0;font-weight:100;padding:0px 7px',
        estilodatos51 ='border:0;padding:0px 1px 1px 1px',
        etiqueta51 = '&bull;&nbsp;PIB per cápita',
        datos51 = alias(PIB_per_capital),
        estiloetiqueta52 =  'border:0;font-weight:100;padding:0px 7px',
        estilodatos52 ='border:0;padding:0px 1px 1px 1px',
        etiqueta52 = '&bull;&nbsp;[[Moneda]]',
        datos52 = args['moneda'],
        etiqueta53 = concatenar('[[Índice de Desarrollo Humano|IDH]]',
                     si(args['IDH año'],concatenar('&nbsp;(', args['IDH año'], ')'))),
        datos53 = concatenar(args['IDH'],
                     si(args['IDH puesto'], concatenar('&nbsp;(', args['IDH puesto'],'.º')),
                     si(args['número_entidades'],concatenar('&nbsp;de ', args['número_entidades'])), 
                     si(args['IDH categoría'],concatenar('&nbsp;–', args['IDH categoría'],')'))),
        estiloetiqueta54 = 'border:0;font-weight:100;padding:0px 7px',
        estilodatos54 = 'border:0;padding:0px 1px 1px 1px',
        etiqueta54 = '&bull;&nbsp;Presupuesto anual',
        datos54 = concatenar(args['presupuesto'],
                     si(args['presupuesto_año'],
                       concatenar('&nbsp;<span style="font-size:90%">(año', args['presupuesto_año'], ')</span>'))),
        estiloetiqueta55 = 'border:0;font-weight:100;padding:0px 7px',
        estilodatos55 = 'border:0;padding:0px 1px 1px 1px',
        etiqueta55 = '&bull;&nbsp;[[Tasa de desempleo]]',
        datos55 = args['tasa_desempleo'],
        estiloetiqueta56  = 'border:0;font-weight:100;padding:0px 7px',
        estilodatos56 = 'border:0;padding:0px 1px 1px 1px',
        etiqueta56 = '&bull;&nbsp;Ingresos medios',
        datos56 = args['ingresos_medios'],
        etiqueta57 = '[[Huso horario]]',
        datos57 = alias('horario'),
        estiloetiqueta58  = 'border:0;font-weight:100;padding:0px 7px',
        estilodatos58 = 'border:0;padding:0px 1px 1px 1px',
        etiqueta58 = '&bull;&nbsp;en [[Horario de verano|verano]]',
        datos58 = si(args['horario'], args['horario_verano']),
        etiqueta59 = alias('código_postal_nombre'),
        datos59 = si(alias('código_postal') and alias('código_postal') ~= '',
                    concatenar('<span  class="postal-code">', alias('código_postal'),'</span>')),
        etiqueta60 = alias('prefijo_telefónico_nombre'),
        datos60 = alias('prefijo_telefónico'),
        etiqueta61 = alias('matrícula_autos_nombre'),
        datos61 = alias('matrícula_autos'),
        etiqueta62 = '[[ISO 3166-2]]',
        datos62 = alias('código_ISO'),
        etiqueta63 = alias('nombre_código1'),
        datos63 = alias('código1'),
        etiqueta64 = alias('nombre_código2'),
        datos64 = si(alias('código1'), args['código2']),
        etiqueta65 = 'Fiestas mayores',
        datos65 = alias('fiestas'),
        etiqueta66 = '[[Hermanamiento de ciudades|Hermanada]] con',
        datos66 = si(args['hermandad'], concatenar('<span></span>', args['hermandad'])),
        etiqueta67 = '[[Santo patrón|Patrón]]',
        datos67 = args['patrón'],
        etiqueta68 = '[[Santa patrona|Patrona]]',
        datos68 = args['patrona'],
        etiqueta69 = args['campo1_nombre'] or  'Campo 1',
        datos69 = args['campo1'],
        etiqueta70 = args['campo2_nombre'] or  'Campo 2',
        datos70 = args['campo2'],
        etiqueta71 = args['campo3_nombre'] or  'Campo 3',
        datos71 = args['campo3'],
        etiqueta72 = args['campo4_nombre'] or  'Campo 4',
        datos72 = args['campo4'], 
        etiqueta73 = args['campo5_nombre'] or  'Campo 5',
        datos73 = args['campo5'],
        etiqueta74 = args['campo6_nombre'] or  'Campo 6',
        datos74 = args['campo6'],
        etiqueta75 = args['campo7_nombre'] or  'Campo 7',
        datos75 = args['campo7'],
        etiqueta76 = args['campo8_nombre'] or  'Campo 8',
        datos76 = args['campo8'],
        etiqueta77 = args['campo9_nombre'] or  'Campo 9',
        datos77 = args['campo8'],
        datos78 = si(alias('web'), 
                     concatenar('[http://', alias('web'),' Sitio web oficial ', si(args['página web_1_tipo'],args['página web_1_tipo'],''), ']')),
        estilodatos79 = 'border:0;padding:0px 1px 1px 1px',
        datos79 = si(alias('web2'), 
                     concatenar('[http://', alias('web2'), ' Sitio web oficial ',si(args['página web_2_tipo'],args['página web_2_tipo'],'') , ']')),
        datos80 = si(args['miembro_de'],concatenar('Miembro de: <span></span>', args['miembro_de'])),
        imageninferior = args['imageninferior'], 
        pieinferior = args['imageninferior_pie'],
        estilopieinferior = 'font-size:smaller; font-weight:bold',
        estilopiedetabla = 'text-align:left; font-size:95%; line-height:1.2em',
        piedetabla = args['notas']         		            	            
    }

end

function p.ficha(frame)
    marco = frame
    local origArgs = {}
    Wikidata:setFrame(marco)
    if frame == mw.getCurrentFrame() then
        origArgs = frame:getParent().args
    else        
        origArgs = frame
    end
             
    args = {}
    for k, v in pairs(origArgs) do
        if v ~= ''  then
            args[k] = v 
        end
    end 
    parametros()
    return Ficha.infobox(ParametrosFicha)--Devuelve el módulo:Ficha con los parámetro de éste
end
 
return p