Class: TZInfo::Country
Relationships & Source Files | |
Super Chains via Extension / Inclusion / Inheritance | |
Instance Chain:
self,
Comparable
|
|
Inherits: | Object |
Defined in: | lib/tzinfo/country.rb |
Overview
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.
Class Method Summary
-
._load(data) ⇒ Country
Loads a
Country
from the serialized representation returned by #_dump. - .all ⇒ Array<Country>
- .all_codes ⇒ Array<String>
-
.get(code) ⇒ Country
Gets a
Country
by its ISO 3166-1 alpha-2 code. -
.new(info) ⇒ Country
constructor
Initializes a new
Country
based upon aDataSources::CountryInfo
instance. - .data_source ⇒ DataSource private
Instance Method Summary
-
#<=>(c) ⇒ Integer
Compares this
Country
with another based on their #code. -
#=~(regexp) ⇒ Integer
Matches
regexp
against the #code of thisCountry
. -
#_dump(limit) ⇒ String
Returns a serialized representation of this
Country
. - #code ⇒ String
- #eql?(c) ⇒ Boolean
- #hash ⇒ Integer
- #inspect ⇒ String
- #name ⇒ String
- #to_s ⇒ String
-
#zone_identifiers ⇒ Array<String>
(also: #zone_names)
Returns an
Array
containing the identifier for each time zone observed by the country. -
#zone_info ⇒ Array<CountryTimezone>
Returns a frozen
Array
containing aCountryTimezone
instance for each time zone observed by the country. -
#zone_names
Alias for #zone_identifiers.
-
#zones ⇒ Array<Timezone>
Returns An
Array
containing aTimezone
instance for each time zone observed by the country.
Constructor Details
.new(info) ⇒ Country
Initializes a new Country
based upon a DataSources::CountryInfo
instance.
Country
instances should not normally be constructed directly. Use
the .get method to obtain instances instead.
# File 'lib/tzinfo/country.rb', line 72
def initialize(info) @info = info end
Class Method Details
._load(data) ⇒ Country
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
.
# File 'lib/tzinfo/country.rb', line 204
def self._load(data) Country.get(data) end
.all ⇒ Array
<Country
>
# File 'lib/tzinfo/country.rb', line 52
def all data_source.country_codes.collect {|code| get(code)} end
.all_codes ⇒ Array
<String
>
# File 'lib/tzinfo/country.rb', line 46
def all_codes data_source.country_codes end
.data_source ⇒ DataSource (private)
# File 'lib/tzinfo/country.rb', line 59
def data_source DataSource.get end
.get(code) ⇒ Country
Gets a Country
by its ISO 3166-1 alpha-2 code.
The .all_codes method can be used to obtain a list of valid ISO 3166-1 alpha-2 codes.
# File 'lib/tzinfo/country.rb', line 40
def get(code) Country.new(data_source.get_country_info(code)) end
Instance Method Details
#<=>(c) ⇒ Integer
Compares this Country
with another based on their #code.
#=~(regexp) ⇒ Integer
Matches regexp
against the #code of this Country
.
# File 'lib/tzinfo/country.rb', line 185
def =~(regexp) regexp =~ code end
#_dump(limit) ⇒ String
Returns a serialized representation of this Country
. This method is
called when using Marshal.dump
with an instance of Country
.
# File 'lib/tzinfo/country.rb', line 194
def _dump(limit) code end
#code ⇒ String
# File 'lib/tzinfo/country.rb', line 77
def code @info.code end
#eql?(c) ⇒ Boolean
# File 'lib/tzinfo/country.rb', line 170
def eql?(c) self == c end
#hash ⇒ Integer
# File 'lib/tzinfo/country.rb', line 175
def hash code.hash end
#inspect ⇒ String
# File 'lib/tzinfo/country.rb', line 94
def inspect "#<#{self.class}: #{@info.code}>" end
#name ⇒ String
# File 'lib/tzinfo/country.rb', line 82
def name @info.name end
#to_s ⇒ String
# File 'lib/tzinfo/country.rb', line 88
def to_s name end
#zone_identifiers ⇒ Array
<String
>
Also known as: #zone_names
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.
# File 'lib/tzinfo/country.rb', line 111
def zone_identifiers zone_info.map(&:identifier) end
#zone_info ⇒ Array
<CountryTimezone>
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.
# File 'lib/tzinfo/country.rb', line 152
def zone_info @info.zones end
#zone_names
Alias for #zone_identifiers.
# File 'lib/tzinfo/country.rb', line 114
alias zone_names zone_identifiers
#zones ⇒ Array
<Timezone>
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.
# File 'lib/tzinfo/country.rb', line 132
def zones zone_info.map(&:timezone) end