Class: TZInfo::CountryTimezone

Inherits:
Object
  • Object
show all
Defined in:
lib/tzinfo/country_timezone.rb

Overview

A Timezone within a Country. This contains extra information about the Timezone that is specific to the Country (a Timezone could be used by multiple countries).

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(identifier, latitude_numerator, latitude_denominator, longitude_numerator, longitude_denominator, description = nil) ⇒ CountryTimezone

Creates a new CountryTimezone with a timezone identifier, latitude, longitude and description. The latitude and longitude are specified as rationals - a numerator and denominator. For performance reasons, the numerators and denominators must be specified in their lowest form.

CountryTimezone instances should not normally be constructed manually.



44
45
46
47
48
49
50
51
52
# File 'lib/tzinfo/country_timezone.rb', line 44

def initialize(identifier, latitude_numerator, latitude_denominator, 
               longitude_numerator, longitude_denominator, description = nil) #:nodoc:
  @identifier = identifier
  @latitude_numerator = latitude_numerator
  @latitude_denominator = latitude_denominator
  @longitude_numerator = longitude_numerator
  @longitude_denominator = longitude_denominator      
  @description = description
end

Instance Attribute Details

#descriptionObject (readonly)

A description of this timezone in relation to the country, e.g. “Eastern Time”. This is usually nil for countries having only a single Timezone.



36
37
38
# File 'lib/tzinfo/country_timezone.rb', line 36

def description
  @description
end

#identifierObject (readonly)

The zone identifier.



31
32
33
# File 'lib/tzinfo/country_timezone.rb', line 31

def identifier
  @identifier
end

Instance Method Details

#==(ct) ⇒ Object

Returns true if and only if the given CountryTimezone is equal to the current CountryTimezone (has the same identifer, latitude, longitude and description).



78
79
80
81
82
83
# File 'lib/tzinfo/country_timezone.rb', line 78

def ==(ct)
  ct.respond_to?(:identifier) && ct.respond_to?(:latitude) &&
  ct.respond_to?(:longitude)  && ct.respond_to?(:description) &&
  identifier == ct.identifier  && latitude == ct.latitude &&
  longitude == ct.longitude   && description == ct.description         
end

#description_or_friendly_identifierObject

if description is not nil, this method returns description; otherwise it returns timezone.friendly_identifier(true).



61
62
63
# File 'lib/tzinfo/country_timezone.rb', line 61

def description_or_friendly_identifier
  description || timezone.friendly_identifier(true)
end

#eql?(ct) ⇒ Boolean

Returns true if and only if the given CountryTimezone is equal to the current CountryTimezone (has the same identifer, latitude, longitude and description).

Returns:

  • (Boolean)


88
89
90
# File 'lib/tzinfo/country_timezone.rb', line 88

def eql?(ct)
  self == ct
end

#hashObject

Returns a hash of this CountryTimezone.



93
94
95
96
# File 'lib/tzinfo/country_timezone.rb', line 93

def hash
  @identifier.hash ^ @latitude_numerator.hash ^ @latitude_denominator.hash ^ 
    @longitude_numerator.hash ^ @longitude_denominator.hash ^ @description.hash
end

#inspectObject

Returns internal object state as a programmer-readable string.



99
100
101
# File 'lib/tzinfo/country_timezone.rb', line 99

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

#latitudeObject

The latitude of this timezone in degrees as a Rational.



66
67
68
# File 'lib/tzinfo/country_timezone.rb', line 66

def latitude
  @latitude ||= Rational.send(:new!, @latitude_numerator, @latitude_denominator)
end

#longitudeObject

The longitude of this timezone in degrees as a Rational.



71
72
73
# File 'lib/tzinfo/country_timezone.rb', line 71

def longitude
  @longitude ||= Rational.send(:new!, @longitude_numerator, @longitude_denominator)
end

#timezoneObject

The Timezone (actually a TimezoneProxy for performance reasons).



55
56
57
# File 'lib/tzinfo/country_timezone.rb', line 55

def timezone
  Timezone.get_proxy(@identifier)
end