FANDOM


--[[**************************************************************************************************************
  *     
  *     Nombre: Módulo:Densidad
  *
  *     Descripción: Este módulo calcula la densidad de población dividiendo la población y 
  *               la superficie o el valor que asigne la Plantilla:Población (dependiento del parámetro 1) 
  *               y la superficie. 
  *               Tiene funciones adicionales que depuran el número tomando de igual forma la coma y el punto 
  *               como separador decimal.
  *
  ************************************************************************************************************]]
 
local p = {}
local marco
 
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 ''
        end
    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,',','.'),' ','') --Transforma el separador decimal si es coma en punto y elimina  . 
    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 poblacion(pais,municipio)
--Función auxiliar que aplica la plantilla:Población
    local dato = marco:expandTemplate{
    title = 'Población',
    args = {
         pais, municipio, formato = 'no'
         }
    }  
    return dato
end
 
function p.densidad(frame)
    marco = frame
    local Pais = {}
    local Municipio = {}
    local Superficie = {}
    local Poblacion = {}
    local s = frame.args[1]
 
    if mw.ustring.find(s, '%a') then -- Con esto detecta si el 1 er parametro es un cod ISO de país o el valor de la población
    --Si detecta que es una letra aplica la plantilla población y los toma como: 1 cod ISO país, 2 cod entidad y 3 superficie.
        Pais = frame.args[1]
        Municipio = frame.args[2]
        Superficie = frame.args[3]
        Poblacion = poblacion(Pais,Municipio)
    else 
--De lo contrario lee los dos parámetros como 1 población y 2 superficie
        Superficie = frame.args[2]
        Poblacion = frame.args[1]
    end
 
    local Densidad = dividir(Poblacion,Superficie)--Calculamos la densidad
    return Densidad
    end
return p

¡Interferencia de bloqueo de anuncios detectada!


Wikia es un sitio libre de uso que hace dinero de la publicidad. Contamos con una experiencia modificada para los visitantes que utilizan el bloqueo de anuncios

Wikia no es accesible si se han hecho aún más modificaciones. Si se quita el bloqueador de anuncios personalizado, la página cargará como se esperaba.