Class: Accuweather::Location::Cache

Inherits:
Object
  • Object
show all
Defined in:
lib/accuweather/location/cache.rb

Constant Summary collapse

CITIES_CSV_FILE =
File.join(File.dirname(__dir__), '..', '..', 'assets', 'cities.z')

Instance Method Summary collapse

Constructor Details

#initializeCache

Returns a new instance of Cache.



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/accuweather/location/cache.rb', line 6

def initialize
  csv_data = Zlib::Inflate.inflate(File.read(CITIES_CSV_FILE))

  @city_data = {}
  csv_data.split("\n").each do |line|
    line_data = line.split('|')
    arr = @city_data[line_data[1].downcase]
    arr = [] if arr.nil?
    arr << Accuweather::Location::City.new(id: line_data[0],
                                           city: line_data[1],
                                           state: line_data[2],
                                           latitude: line_data[3],
                                           longitude: line_data[4])
    @city_data[line_data[1].downcase] = arr
  end
end

Instance Method Details

#cities(name:) ⇒ Object



23
24
25
# File 'lib/accuweather/location/cache.rb', line 23

def cities(name:)
  @city_data.fetch(name.downcase, [])
end