class MX::Banxico::Series
Series
de datos que se pueden obtener de los servicios web del Banco de México (Banxico).
Constants
- SERIES_RESERVAS_INTERNACIONALES
Series
de reservas internacionales.Series:
-
:reserva_internacional
-
- SERIES_TASAS_DE_INTERES
Series
de tasas de interés.Series:
-
:tasa_objetivo
-
:tasa_interes_interbancaria_tiie_28_dias
-
:tasa_interes_interbancaria_tiie_91_dias
-
:tasa_rendimiento_cetes_28_dias
-
- SERIES_TIPOS_DE_CAMBIO
Series
de tipos de cambio.Series:
-
:dolar_canadiense
-
:dolar_fix
-
:dolar_liquidacion
-
:euro
-
:libra_esterlina
-
:yen
-
- SERIES_UDIS
Series
de UDIS ({www.banxico.org.mx/ayuda/temas-mas-consultados/udis–unidades-inversion-.html Unidades de Inversión}).Series:
-
:udis
-
- TIPOS
Tipos de series.
Tipos:
-
:reservas_internacionales
-
:tasas_de_interes
-
:tipos_de_cambio
-
:udis
-
Public Class Methods
Obtiene el identificador de acuerdo al tipo y a la serie.
@param tipo [Symbol] el tipo de la serie (ver {TIPOS} o {.tipos}). @param serie [Symbol] el nombre de la serie.
@return [String] el identificador de la serie.
@raise [ArgumentError] si `tipo` no existe (no es una llave en {TIPOS} o un elemento de {.tipos}). @raise [ArgumentError] si `serie` no existe.
# File lib/MX/Banxico/series.rb, line 252 def identificador(tipo, serie) raise ArgumentError.new("El tipo no existe (tipo: #{tipo}).") unless TIPOS.has_key?(tipo.to_sym) raise ArgumentError.new("La serie no existe (serie: #{serie}).") unless send(tipo.to_sym).has_key?(serie.to_sym) send(tipo.to_sym)[serie.to_sym][:id] end
Obtiene una lista de identificadores de las series.
Cuando se especifica el `tipo`, la lista de identificadores se limita a los de las series de ese `tipo` únicamente.
@param tipo [Symbol] el tipo de la serie (ver {TIPOS} o {.tipos}).
@return [Array<String>] arreglo de identificadores.
@raise [ArgumentError] si `tipo` no existe (no es una llave en {TIPOS} o un elemento de {.tipos}).
# File lib/MX/Banxico/series.rb, line 269 def identificadores(tipo = nil) if tipo.nil? TIPOS.inject([]){ |arr, tipo_serie| arr << tipo_serie.last.values.each.map{ |s| s[:id] } }.flatten else raise ArgumentError.new("El tipo no existe (tipo: #{tipo}).") unless TIPOS.has_key?(tipo.to_sym) send(tipo.to_sym).values.map{ |v| v[:id] } end end
Obtiene el nombre de la serie de acuerdo al identificador dado.
Cuando se especifica el `tipo`, la búsqueda del nombre se limita a los de las series de ese `tipo` únicamente.
@param identificador [String] identificador de la serie. @param tipo [Symbol] el tipo de la serie (ver {TIPOS} o {.tipos}).
@return [String] el nombre de la serie.
@raise [ArgumentError] si `tipo` no existe (no es una llave en {TIPOS} o un elemento de {.tipos}). @raise [ArgumentError] si `identificador` no existe.
# File lib/MX/Banxico/series.rb, line 291 def nombre(identificador, tipo = nil) nom = nil if tipo.nil? tipos.each do |t| nom = busca_nombre(identificador, t) break unless nom.nil? end raise ArgumentError.new("El identificador no existe (identificador: #{identificador}).") if nom.nil? else nom = busca_nombre(identificador, tipo) raise ArgumentError.new("El identificador (identificador: #{identificador}) no se encuentra en el tipo de serie dado (tipo: #{tipo}).") if nom.nil? end nom end
Obtiene una lista de nombres de las series.
Cuando se especifica el `tipo`, la lista de nombres se limita a los de las series de ese `tipo` únicamente.
@param tipo [Symbol] el tipo de la serie (ver {TIPOS} o {.tipos}).
@return [Array<String>] arreglo de nombres.
@raise [ArgumentError] si `tipo` no existe (no es una llave en {TIPOS} o un elemento de {.tipos}).
# File lib/MX/Banxico/series.rb, line 317 def nombres(tipo = nil) if tipo.nil? TIPOS.inject([]){ |arr, tipo_serie| arr << tipo_serie.last.keys }.flatten else raise ArgumentError.new("El tipo no existe (tipo: #{tipo}).") unless TIPOS.has_key?(tipo.to_sym) send(tipo.to_sym).keys end end
Series
de reservas internacionales.
Series:
-
:reserva_internacional
@return [Hash] donde cada llave es el nombre de la serie y su valor es otro `Hash`con:
* identificador (`:id`) * descripción (`:descripcion`) * título (`:titulo`) * tipo de la cifra (`:tipo_cifra`), por ejemplo: "Tipo de cambio" * tipo de la unidad (`:tipo_unidad`), por ejemplo: "Millones de dólares"
# File lib/MX/Banxico/series.rb, line 180 def reservas_internacionales SERIES_RESERVAS_INTERNACIONALES end
Series
de tasas de interés.
Series:
-
:tasa_objetivo
-
:tasa_interes_interbancaria_tiie_28_dias
-
:tasa_interes_interbancaria_tiie_91_dias
-
:tasa_rendimiento_cetes_28_dias
@return [Hash] donde cada llave es el nombre de la serie y su valor es otro `Hash`con:
* identificador (`:id`) * descripción (`:descripcion`) * título (`:titulo`)
# File lib/MX/Banxico/series.rb, line 198 def tasas_de_interes SERIES_TASAS_DE_INTERES end
Arreglo con los tipos de series. Ver {TIPOS}.
Tipos:
-
:reservas_internacionales
-
:tasas_de_interes
-
:tipos_de_cambio
-
:udis
@return [Array<Symbol>] arreglo con los tipos de series.
# File lib/MX/Banxico/series.rb, line 163 def tipos TIPOS.keys end
Series
de tipos de cambio.
Series:
-
:dolar_canadiense
-
:dolar_fix
-
:dolar_liquidacion
-
:euro
-
:libra_esterlina
-
:yen
@return [Hash] donde cada llave es el nombre de la serie y su valor es otro `Hash`con:
* identificador (`:id`) * descripción (`:descripcion`) * título (`:titulo`) * tipo de la cifra (`:tipo_cifra`), por ejemplo: "Tipo de cambio" * tipo de la unidad (`:tipo_unidad`), por ejemplo: "Millones de dólares"
# File lib/MX/Banxico/series.rb, line 220 def tipos_de_cambio SERIES_TIPOS_DE_CAMBIO end
Todas las series por tipo.
@return [Hash] con el tipo por llave. Cada llave contiene otro `Hash` con las series.
# File lib/MX/Banxico/series.rb, line 149 def todas TIPOS end
Series
de UDIS ({www.banxico.org.mx/ayuda/temas-mas-consultados/udis–unidades-inversion-.html Unidades de Inversión}).
Series:
-
:udis
@return [Hash] donde cada llave es el nombre de la serie y su valor es otro `Hash`con:
* identificador (`:id`) * descripción (`:descripcion`) * título (`:titulo`) * tipo de la cifra (`:tipo_cifra`), por ejemplo: "Tipo de cambio" * tipo de la unidad (`:tipo_unidad`), por ejemplo: "Millones de dólares"
# File lib/MX/Banxico/series.rb, line 237 def udis SERIES_UDIS end
Private Class Methods
Busca el nombre de acuerdo al identificador y el tipo dado.
@param identificador [String] identificador de la serie. @param tipo [Symbol] el tipo de la serie (ver {TIPOS} o {.tipos}).
@return [String] si el nombre de la serie fue encontrado. @return [nil] si el nombre de la serie no fue encontrado.
@raise [ArgumentError] si `tipo` no existe (no es una llave en {TIPOS} o un elemento de {.tipos}).
# File lib/MX/Banxico/series.rb, line 338 def busca_nombre(identificador, tipo) raise ArgumentError.new("El tipo no existe (tipo: #{tipo}).") unless TIPOS.has_key?(tipo.to_sym) send(tipo.to_sym).each_pair{|k, v| return k if v[:id] == identificador } nil end