File: //usr/local/rvm/gems/ruby-3.0.2/gems/tzinfo-2.0.4/lib/tzinfo/data_timezone.rb
# encoding: UTF-8
# frozen_string_literal: true
module TZInfo
# Represents time zones that are defined by rules that set out when
# transitions occur.
class DataTimezone < InfoTimezone
# (see Timezone#period_for)
def period_for(time)
raise ArgumentError, 'time must be specified' unless time
timestamp = Timestamp.for(time)
raise ArgumentError, 'time must have a specified utc_offset' unless timestamp.utc_offset
info.period_for(timestamp)
end
# (see Timezone#periods_for_local)
def periods_for_local(local_time)
raise ArgumentError, 'local_time must be specified' unless local_time
info.periods_for_local(Timestamp.for(local_time, :ignore))
end
# (see Timezone#transitions_up_to)
def transitions_up_to(to, from = nil)
raise ArgumentError, 'to must be specified' unless to
to_timestamp = Timestamp.for(to)
from_timestamp = from && Timestamp.for(from)
begin
info.transitions_up_to(to_timestamp, from_timestamp)
rescue ArgumentError => e
raise ArgumentError, e.message.gsub('_timestamp', '')
end
end
# Returns the canonical {Timezone} instance for this {DataTimezone}.
#
# For a {DataTimezone}, this is always `self`.
#
# @return [Timezone] `self`.
def canonical_zone
self
end
end
end