Sha256: a90ed811f6399db9ddfc00bb5908102c84f7a43f6952848a4db1b0ad719eefc3

Contents?: true

Size: 661 Bytes

Versions: 8

Compression:

Stored size: 661 Bytes

Contents

require "ostruct"
require_relative "collection"
require_relative "distance"

module RateCenter
  class City < OpenStruct
    extend Collection

    class << self
      private

      def data
        ::RateCenter.data_loader.cities
      end

      def load_collection
        data.map do |data|
          city = new(**data)
          city.nearby_rate_centers = Array(data["nearby_rate_centers"]).map do |rate_center|
            distance_km = rate_center.fetch("distance_km")
            Distance.new(
              name: rate_center.fetch("name"),
              distance_km:
            )
          end
          city
        end
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
rate_center-0.3.1 lib/rate_center/city.rb
rate_center-0.3.0 lib/rate_center/city.rb
rate_center-0.2.0 lib/rate_center/city.rb
rate_center-0.1.7 lib/rate_center/city.rb
rate_center-0.1.6 lib/rate_center/city.rb
rate_center-0.1.5 lib/rate_center/city.rb
rate_center-0.1.4 lib/rate_center/city.rb
rate_center-0.1.3 lib/rate_center/city.rb