Sha256: e8eb8a4c97749f0167f8efbbb5d3ad549d14cf6f7ab88192aaf9de93158d682b

Contents?: true

Size: 1.74 KB

Versions: 1

Compression:

Stored size: 1.74 KB

Contents

require 'tzinfo/timezone'

module TZInfo
  # An ISO 3166 country. Can be used to get a list of Timezones for a country.
  # For example:
  #
  #  us = Country.get('US')
  #  puts us.zone_identifiers
  #  puts us.zones    
  class Country
    # Array of Timezone identifiers for the country.
    attr_reader :zone_names
    
    # Gets a Country by its ISO 3166 code. Raising an exception if it couldn't
    # be found.
    def self.get(identifier)
      raise 'Invalid identifier' if identifier !~ /^[A-Z]{2}$/
      require "tzinfo/countries/#{identifier}"
      Countries.const_get(identifier).instance      
    end
    
    # Returns an Array of all the valid country codes.
    def self.all_codes
      require 'tzinfo/countries/Index'
      Countries::Index.all_codes
    end
    
    # Returns an Array of all the defined Countries.
    def self.all
      all_codes.collect {|code|
        get(code)
      }
    end
    
    # Initializes the Country.
    def initialize
      super
      @zone_names = []
      @code = nil
      @name = nil      
    end
    
    # The country code.
    def code
      @code
    end
    
    # The name of the country.
    def name
      @name
    end
    
    # Array of Timezone identifiers for the country.
    def zone_identifiers
      zone_names
    end
    
    # An array of all the Timezones for this country.
    def zones
      @zone_names.collect {|zone_name|
        Timezone.get(zone_name)
      }
    end
            
    protected
      def add_zone(zone_name)
        @zone_names << zone_name
      end
      
      def zones_added
        @zone_names.freeze
      end
      
      def set_code(code)
        @code = code
      end
      
      def set_name(name)
        @name = name
      end            
  end    
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
tzinfo-0.0.1 lib/tzinfo/country.rb