Module: Zip2Tz

Defined in:
lib/zip2tz.rb,
lib/zip2tz/version.rb

Constant Summary collapse

TZ_NAMES =
%w(
  America/New_York
  America/Chicago
  America/Denver
  America/Los_Angeles
  America/Kentucky/Louisville
  America/Indiana/Indianapolis
  America/Detroit
  America/Boise
  America/Phoenix
  America/Anchorage
  Pacific/Honolulu
  America/Indiana/Knox
  America/Indiana/Winamac
  America/Indiana/Vevay
  America/Indiana/Marengo
  America/Indiana/Vincennes
  America/Indiana/Tell_City
  America/Indiana/Petersburg
  America/Menominee
  America/Shiprock
  America/Nome
  America/Juneau
  America/Kentucky/Monticello
  America/North_Dakota/Center
  America/Yakutat
)
MAP_PATH =
Pathname.new(__dir__).parent.join('data', 'map.json')
MAP =
JSON.parse(MAP_PATH.read)
VERSION =
"0.1.1".freeze

Class Method Summary collapse

Class Method Details

.fetch(ary, *idxn) ⇒ Object



43
44
45
46
47
48
# File 'lib/zip2tz.rb', line 43

def self.fetch(ary, *idxn)
  return nil if ary.nil?
  return TZ_NAMES[ary] unless ary.is_a?(Array)
  i = idxn.shift
  fetch(ary[i], *idxn)
end

.lookup(zip) ⇒ Object



37
38
39
40
41
# File 'lib/zip2tz.rb', line 37

def self.lookup(zip)
  zip = zip.to_s
  raise '5 digits required' if zip !~ /\A\d{5}/
  fetch(MAP, *zip.chars.first(5).map(&:to_i))
end