class TZInfo::Country
The {Country} class represents an ISO 3166-1 country. It can be used to obtain a list of time zones observed by a country. For example:
united_states = Country.get('US') united_states.zone_identifiers united_states.zones united_states.zone_info
The {Country} class is thread-safe. It is safe to use class and instance methods of {Country} in concurrently executing threads. Instances of {Country} can be shared across thread boundaries.
Country
information available through TZInfo
is intended as an aid for users, to help them select time zone data appropriate for their practical needs. It is not intended to take or endorse any position on legal or territorial claims.
Public Class Methods
Loads a {Country} from the serialized representation returned by {_dump}. This is method is called when using ‘Marshal.load` or `Marshal.restore` to restore a serialized {Country}.
@param data [String] a serialized representation of a {Country}. @return [Country] the result of converting ‘data` back into a {Country}.
# File lib/tzinfo/country.rb, line 204 def self._load(data) Country.get(data) end
@return [Array<Country>] an ‘Array` containing one {Country} instance
for each defined country.
# File lib/tzinfo/country.rb, line 52 def all data_source.country_codes.collect {|code| get(code)} end
@return [Array<String>] an ‘Array` containing all the valid ISO 3166-1
alpha-2 country codes.
# File lib/tzinfo/country.rb, line 46 def all_codes data_source.country_codes end
Gets a {Country} by its ISO 3166-1 alpha-2 code.
The {Country.all_codes} method can be used to obtain a list of valid ISO 3166-1 alpha-2 codes.
@param code [String] An ISO 3166-1 alpha-2 code. @return [Country] a {Country} instance representing the ISO-3166-1
country identified by the `code` parameter.
@raise [InvalidCountryCode] If {code} is not a valid ISO 3166-1 alpha-2
code it couldn't be found.
# File lib/tzinfo/country.rb, line 40 def get(code) Country.new(data_source.get_country_info(code)) end
Initializes a new {Country} based upon a {DataSources::CountryInfo} instance.
{Country} instances should not normally be constructed directly. Use the {Country.get} method to obtain instances instead.
@param info [DataSources::CountryInfo] the data to base the new {Country}
instance upon.
# File lib/tzinfo/country.rb, line 72 def initialize(info) @info = info end
Public Instance Methods
Compares this {Country} with another based on their {code}.
@param c [Object] an ‘Object` to compare this {Country} with. @return [Integer] -1 if `c` is less than `self`, 0 if `c` is equal to
`self` and +1 if `c` is greater than `self`, or `nil` if `c` is not an instance of {Country}.
# File lib/tzinfo/country.rb, line 162 def <=>(c) return nil unless c.is_a?(Country) code <=> c.code end
Matches ‘regexp` against the {code} of this {Country}.
@param regexp [Regexp] a ‘Regexp` to match against the {code} of
this {Country}.
@return [Integer] the position the match starts, or ‘nil` if there is no
match.
# File lib/tzinfo/country.rb, line 185 def =~(regexp) regexp =~ code end
Returns a serialized representation of this {Country}. This method is called when using ‘Marshal.dump` with an instance of {Country}.
@param limit [Integer] the maximum depth to dump - ignored. @return [String] a serialized representation of this {Country}.
# File lib/tzinfo/country.rb, line 194 def _dump(limit) code end
@return [String] the ISO 3166-1 alpha-2 country code.
# File lib/tzinfo/country.rb, line 77 def code @info.code end
@param c [Object] an ‘Object` to compare this {Country} with. @return [Boolean] `true` if `c` is an instance of {Country} and has the
same code as `self`, otherwise `false`.
# File lib/tzinfo/country.rb, line 170 def eql?(c) self == c end
@return [Integer] a hash based on the {code}.
# File lib/tzinfo/country.rb, line 175 def hash code.hash end
@return [String] the internal object state as a programmer-readable
`String`.
# File lib/tzinfo/country.rb, line 94 def inspect "#<#{self.class}: #{@info.code}>" end
@return [String] the name of the country.
# File lib/tzinfo/country.rb, line 82 def name @info.name end
@return [String] a ‘String` representation of this {Country} (the name of
the country).
# File lib/tzinfo/country.rb, line 88 def to_s name end
Returns an ‘Array` containing the identifier for each time zone observed by the country. These are in an order that
-
makes some geographical sense, and
-
puts the most populous zones first, where that does not contradict 1.
Returned zone identifiers may refer to cities and regions outside of the country. This will occur if the zone covers multiple countries. Any zones referring to a city or region in a different country will be listed after those relating to this country.
@return [Array<String>] an ‘Array` containing the identifier for each time
zone observed by the country
# File lib/tzinfo/country.rb, line 111 def zone_identifiers zone_info.map(&:identifier) end
Returns a frozen ‘Array` containing a {CountryTimezone} instance for each time zone observed by the country. These are in an order that
-
makes some geographical sense, and
-
puts the most populous zones first, where that does not contradict 1.
The {CountryTimezone} instances can be used to obtain the location and descriptions of the observed time zones.
Identifiers and descriptions of the time zones returned may refer to cities and regions outside of the country. This will occur if the time zone covers multiple countries. Any zones referring to a city or region in a different country will be listed after those relating to this country.
@return [Array<CountryTimezone>] a frozen ‘Array` containing a
{CountryTimezone} instance for each time zone observed by the country.
# File lib/tzinfo/country.rb, line 152 def zone_info @info.zones end
Returns An ‘Array` containing a {Timezone} instance for each time zone observed by the country. These are in an order that
-
makes some geographical sense, and
-
puts the most populous zones first, where that does not contradict 1.
The identifiers of the time zones returned may refer to cities and regions outside of the country. This will occur if the time zone covers multiple countries. Any zones referring to a city or region in a different country will be listed after those relating to this country.
The results are actually instances of {TimezoneProxy} in order to defer loading of the time zone transition data until it is first needed.
@return [Array<Timezone>] an ‘Array` containing a {Timezone} instance for
each time zone observed by the country.
# File lib/tzinfo/country.rb, line 132 def zones zone_info.map(&:timezone) end