class TZInfo::Country
An ISO 3166 country. Can be used to get a list of Timezones for a country. For example:
us = Country.get('US') us.zone_identifiers us.zones us.zone_info
Public Class Methods
Loads a marshalled Country.
# File lib/tzinfo/country.rb, line 161 def self._load(data) Country.get(data) end
Returns an Array of all the defined Countries.
# File lib/tzinfo/country.rb, line 83 def self.all load_index Indexes::Countries.countries.keys.collect {|code| get(code)} end
Returns an Array of all the valid country codes.
# File lib/tzinfo/country.rb, line 77 def self.all_codes load_index Indexes::Countries.countries.keys end
Gets a Country by its ISO 3166 code. Raises an InvalidCountryCode exception if it couldn't be found.
# File lib/tzinfo/country.rb, line 50 def self.get(identifier) instance = @@countries[identifier] unless instance load_index info = Indexes::Countries.countries[identifier] raise InvalidCountryCode.new, 'Invalid identifier' unless info instance = Country.new(info) @@countries[identifier] = instance end instance end
If identifier is a CountryInfo object, initializes the Country instance, otherwise calls get(identifier).
# File lib/tzinfo/country.rb, line 66 def self.new(identifier) if identifier.kind_of?(CountryInfo) instance = super() instance.send :setup, identifier instance else get(identifier) end end
Private Class Methods
Loads in the index of countries if it hasn't already been loaded.
# File lib/tzinfo/country.rb, line 167 def self.load_index unless @@index_loaded require 'tzinfo/indexes/countries' @@index_loaded = true end end
Public Instance Methods
Compare two Countries based on their code. Returns -1 if c is less than self, 0 if c is equal to self and +1 if c is greater than self.
# File lib/tzinfo/country.rb, line 140 def <=>(c) code <=> c.code end
Dumps this Country for marshalling.
# File lib/tzinfo/country.rb, line 156 def _dump(limit) code end
The ISO 3166 country code.
# File lib/tzinfo/country.rb, line 89 def code @info.code end
Returns true if and only if the code of c is equal to the code of this Country.
# File lib/tzinfo/country.rb, line 146 def eql?(c) self == c end
Returns a hash value for this Country.
# File lib/tzinfo/country.rb, line 151 def hash code.hash end
Returns internal object state as a programmer-readable string.
# File lib/tzinfo/country.rb, line 104 def inspect "#<#{self.class}: #{@info.code}>" end
The name of the country.
# File lib/tzinfo/country.rb, line 94 def name @info.name end
Alias for name.
# File lib/tzinfo/country.rb, line 99 def to_s name end
Returns a frozen array of all the zone identifiers for the country. These are in an order that
(1) makes some geographical sense, and (2) puts the most populous zones first, where that does not contradict (1).
# File lib/tzinfo/country.rb, line 112 def zone_identifiers @info.zone_identifiers end
Returns a frozen array of all the timezones for the for the country as CountryTimezone instances (containing extra information about each zone). These are in an order that
(1) makes some geographical sense, and (2) puts the most populous zones first, where that does not contradict (1).
# File lib/tzinfo/country.rb, line 134 def zone_info @info.zones end
An array of all the Timezones for this country. Returns TimezoneProxy objects to avoid the overhead of loading Timezone definitions until a conversion is actually required. The Timezones are returned in an order that
(1) makes some geographical sense, and (2) puts the most populous zones first, where that does not contradict (1).
# File lib/tzinfo/country.rb, line 123 def zones zone_identifiers.collect {|id| Timezone.get_proxy(id) } end
Private Instance Methods
Called by ::new to initialize a new Country instance. The info parameter is a CountryInfo that defines the country.
# File lib/tzinfo/country.rb, line 176 def setup(info) @info = info end