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