class Icalendar::Timezone

Public Class Methods

new() click to toggle source
Calls superclass method Icalendar::Component::new
# File lib/icalendar/timezone.rb, line 77
def initialize
  super 'timezone'
end

Public Instance Methods

daylight_for(local) click to toggle source
# File lib/icalendar/timezone.rb, line 117
def daylight_for(local)
  possible = daylights.map do |day|
    prev = day.previous_occurrence(local.to_time)
    [prev, day] unless prev.nil?
  end.compact
  possible.sort_by(&:first).last
end
offset_for_local(local) click to toggle source
# File lib/icalendar/timezone.rb, line 88
def offset_for_local(local)
  standard = standard_for local
  daylight = daylight_for local

  if standard.nil? && daylight.nil?
    "+00:00"
  elsif daylight.nil?
    standard.last.tzoffsetto
  elsif standard.nil?
    daylight.last.tzoffsetto
  else
    sdst = standard.first
    ddst = daylight.first
    if sdst > ddst
      standard.last.tzoffsetto
    else
      daylight.last.tzoffsetto
    end
  end
end
standard_for(local) click to toggle source
# File lib/icalendar/timezone.rb, line 109
def standard_for(local)
  possible = standards.map do |std|
    prev = std.previous_occurrence(local.to_time)
    [prev, std] unless prev.nil?
  end.compact
  possible.sort_by(&:first).last
end
valid?(strict = false) click to toggle source
Calls superclass method Icalendar::HasProperties#valid?
# File lib/icalendar/timezone.rb, line 81
def valid?(strict = false)
  daylights.empty? && standards.empty? and return false
  daylights.all? { |d| d.valid? strict } or return false
  standards.all? { |s| s.valid? strict } or return false
  super
end