Sha256: 3c949d26de27cba21fe83f2060dea7d974e0029a6eed0554339b9359290ae913

Contents?: true

Size: 968 Bytes

Versions: 8

Compression:

Stored size: 968 Bytes

Contents

module Barometer
  module Utils
    class ZoneCodeLookup
      @@zone_codes_file = File.expand_path(
        File.join(File.dirname(__FILE__), 'translations', 'zone_codes.yml'))
      @@zone_codes = nil

      def self._load_zone_codes
        $:.unshift(File.dirname(__FILE__))
        @@zone_codes ||= YAML.load_file(@@zone_codes_file)
      end

      def self.exists?(code)
        _load_zone_codes unless @@zone_codes
        (::Time.zone_offset(code.to_s) || @@zone_codes && @@zone_codes.has_key?(code))
      end

      # Known conflicts:
      # IRT (ireland and india)
      # CST (central standard time, china standard time)
      #
      def self.offset(code)
        # http://www.timeanddate.com/library/abbreviations/timezones/
        # http://www.worldtimezone.com/wtz-names/timezonenames.html
        _load_zone_codes unless @@zone_codes
        ::Time.zone_offset(code) || ((@@zone_codes[code.to_s.upcase] || 0) * 60 * 60)
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
barometer-0.9.7 lib/barometer/utils/zone_code_lookup.rb
barometer-0.9.6 lib/barometer/utils/zone_code_lookup.rb
barometer-0.9.5 lib/barometer/utils/zone_code_lookup.rb
barometer-0.9.4 lib/barometer/utils/zone_code_lookup.rb
barometer-0.9.3 lib/barometer/utils/zone_code_lookup.rb
barometer-0.9.2 lib/barometer/utils/zone_code_lookup.rb
barometer-0.9.1 lib/barometer/utils/zone_code_lookup.rb
barometer-0.9.0 lib/barometer/utils/zone_code_lookup.rb