class Ziptz

Constants

VERSION

Public Class Methods

instance() click to toggle source
# File lib/ziptz.rb, line 5
def self.instance
  @instance ||= new
end

Public Instance Methods

db() click to toggle source
# File lib/ziptz.rb, line 9
def db
  @db ||= begin
    db = SQLite3::Database.open(tz_data_path)
    db.results_as_hash = true
    db
  end
end
inspect() click to toggle source
# File lib/ziptz.rb, line 42
def inspect
  "#<#{self.class}:#{object_id}>"
end
time_zone_name(zip) click to toggle source
# File lib/ziptz.rb, line 17
def time_zone_name(zip)
  time_zone_info(zip)&.dig('time_zone')
end
time_zone_offset(zip) click to toggle source
# File lib/ziptz.rb, line 21
def time_zone_offset(zip)
  time_zone_info(zip)&.dig('offset')
end
time_zone_uses_dst?(zip) click to toggle source
# File lib/ziptz.rb, line 25
def time_zone_uses_dst?(zip)
  tz_info = time_zone_info(zip)
  return unless tz_info

  tz_info['observes_dst'] == 1
end
zips(tz_name) click to toggle source
# File lib/ziptz.rb, line 32
  def zips(tz_name)
    sql = <<-SQL
      select zip_code
      from zip_codes
      where time_zone = ?
      order by zip_code
    SQL
    db.execute(sql, tz_name).map { |row| row['zip_code'] }
  end

Protected Instance Methods

time_zone_info(zip) click to toggle source
# File lib/ziptz.rb, line 48
def time_zone_info(zip)
  return unless zip

  db.get_first_row('select * from zip_codes where zip_code = ? limit 1', zip[0, 5])
end
tz_data_path() click to toggle source
# File lib/ziptz.rb, line 54
def tz_data_path
  File.join(File.dirname(__FILE__), '..', 'data', 'tz.db')
end