Class: TZInfo::Format2::TimezoneDefiner Private
Relationships & Source Files | |
Extension / Inclusion / Inheritance Descendants | |
Subclasses:
TZInfo::Format1::TimezoneDefiner
|
|
Inherits: | Object |
Defined in: | lib/tzinfo/format2/timezone_definer.rb |
Overview
Instances of TimezoneDefiner
are yielded to TZInfo::Data modules by
TimezoneDefinition
to allow the offsets and transitions of the time zone
to be specified.
Class Method Summary
-
.new(string_deduper) ⇒ TimezoneDefiner
constructor
Internal use only
Initializes a new
TimezoneDefiner
.
Instance Attribute Summary
- #transitions ⇒ Array<TimezoneTransition> readonly Internal use only
Instance Method Summary
-
#first_offset ⇒ TimezoneOffset
Internal use only
Returns the first offset to be defined or
nil
if no offsets have been defined. -
#offset(id, base_utc_offset, std_offset, abbreviation)
Internal use only
Defines an offset.
-
#subsequent_rules(*args)
Internal use only
Defines the rules that will be used for handling instants after the last transition.
-
#transition(offset_id, timestamp_value)
Internal use only
Defines a transition to a given offset.
Instance Attribute Details
#transitions ⇒ Array
<TimezoneTransition> (readonly)
# File 'lib/tzinfo/format2/timezone_definer.rb', line 14
attr_reader :transitions
Instance Method Details
#first_offset ⇒ TimezoneOffset
Returns the first offset to be defined or nil
if no offsets have been
defined. The first offset is observed before the time of the first
transition.
# File 'lib/tzinfo/format2/timezone_definer.rb', line 32
def first_offset first = @offsets.first first && first.last end
#offset(id, base_utc_offset, std_offset, abbreviation)
Defines an offset.
# File 'lib/tzinfo/format2/timezone_definer.rb', line 49
def offset(id, base_utc_offset, std_offset, abbreviation) raise ArgumentError, 'An offset has already been defined with the given id' if @offsets.has_key?(id) # Dedupe non-frozen literals from format 1 on all Ruby versions and # format 2 on Ruby < 2.3 (without frozen_string_literal support). abbreviation = @string_deduper.dedupe(abbreviation) offset = TimezoneOffset.new(base_utc_offset, std_offset, abbreviation) @offsets[id] = offset @previous_offset ||= offset end
#subsequent_rules(*args)
Defines the rules that will be used for handling instants after the last transition.
This method is currently just a placeholder for forward compatibility that accepts and ignores any arguments passed.
Support for subsequent rules will be added in a future version of ::TZInfo
and the rules will be included in format 2 releases of TZInfo::Data.
# File 'lib/tzinfo/format2/timezone_definer.rb', line 90
def subsequent_rules(*args) end
#transition(offset_id, timestamp_value)
Defines a transition to a given offset.
Transitions must be defined in increasing time order.
# File 'lib/tzinfo/format2/timezone_definer.rb', line 74
def transition(offset_id, ) offset = @offsets[offset_id] raise ArgumentError, 'offset_id has not been defined' unless offset raise ArgumentError, 'timestamp is not greater than the timestamp of the previously defined transition' if !@transitions.empty? && @transitions.last. >= @transitions << TimezoneTransition.new(offset, @previous_offset, ) @previous_offset = offset end