Class: TZInfo::Country

Inherits:
Object
  • Object
show all
Includes:
Comparable
Defined in:
lib/tzinfo/country.rb

Overview

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

Constant Summary collapse

@@countries =

Defined countries.

{}
@@index_loaded =

Whether the countries index has been loaded yet.

false

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

._load(data) ⇒ Object

Loads a marshalled Country.



157
158
159
# File 'lib/tzinfo/country.rb', line 157

def self._load(data)
  Country.get(data)
end

.allObject

Returns an Array of all the defined Countries.



79
80
81
82
# File 'lib/tzinfo/country.rb', line 79

def self.all
  load_index
  Indexes::Countries.countries.keys.collect {|code| get(code)}
end

.all_codesObject

Returns an Array of all the valid country codes.



73
74
75
76
# File 'lib/tzinfo/country.rb', line 73

def self.all_codes
  load_index
  Indexes::Countries.countries.keys
end

.get(identifier) ⇒ Object

Gets a Country by its ISO 3166 code. Raises an InvalidCountryCode exception if it couldn’t be found.



46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/tzinfo/country.rb', line 46

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

.new(identifier) ⇒ Object

If identifier is a CountryInfo object, initializes the Country instance, otherwise calls get(identifier).



62
63
64
65
66
67
68
69
70
# File 'lib/tzinfo/country.rb', line 62

def self.new(identifier)      
  if identifier.kind_of?(CountryInfo)
    instance = super()
    instance.send :setup, identifier
    instance
  else
    get(identifier)
  end
end

Instance Method Details

#<=>(c) ⇒ Object

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.



136
137
138
# File 'lib/tzinfo/country.rb', line 136

def <=>(c)
  code <=> c.code
end

#_dump(limit) ⇒ Object

Dumps this Country for marshalling.



152
153
154
# File 'lib/tzinfo/country.rb', line 152

def _dump(limit)
  code
end

#codeObject

The ISO 3166 country code.



85
86
87
# File 'lib/tzinfo/country.rb', line 85

def code
  @info.code
end

#eql?(c) ⇒ Boolean

Returns true if and only if the code of c is equal to the code of this Country.

Returns:

  • (Boolean)


142
143
144
# File 'lib/tzinfo/country.rb', line 142

def eql?(c)
  self == c
end

#hashObject

Returns a hash value for this Country.



147
148
149
# File 'lib/tzinfo/country.rb', line 147

def hash
  code.hash
end

#inspectObject

Returns internal object state as a programmer-readable string.



100
101
102
# File 'lib/tzinfo/country.rb', line 100

def inspect
  "#<#{self.class}: #{@info.code}>"
end

#nameObject

The name of the country.



90
91
92
# File 'lib/tzinfo/country.rb', line 90

def name
  @info.name
end

#to_sObject

Alias for name.



95
96
97
# File 'lib/tzinfo/country.rb', line 95

def to_s
  name
end

#zone_identifiersObject Also known as: zone_names

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).


108
109
110
# File 'lib/tzinfo/country.rb', line 108

def zone_identifiers
  @info.zone_identifiers
end

#zone_infoObject

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).


130
131
132
# File 'lib/tzinfo/country.rb', line 130

def zone_info
  @info.zones
end

#zonesObject

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).


119
120
121
122
123
# File 'lib/tzinfo/country.rb', line 119

def zones
  zone_identifiers.collect {|id|
    Timezone.get_proxy(id)        
  }
end