Skip to content

Instantly share code, notes, and snippets.

@mikehale
Created April 6, 2010 21:08
Show Gist options
  • Select an option

  • Save mikehale/358115 to your computer and use it in GitHub Desktop.

Select an option

Save mikehale/358115 to your computer and use it in GitHub Desktop.
rical bug
#!/usr/bin/env ruby
require 'rubygems'
require 'active_support'
require 'ri_cal'
def create_calendar(options={:all_events => false, :dtstamp => false})
Time.zone = "Eastern Time (US & Canada)"
calendar = RiCal.Calendar do |cal|
cal.event do |event|
event.summary = "8:30AM 4th Sunday"
event.dtstart = Time.zone.parse("11/22/2009 08:30:00")
event.dtend = Time.zone.parse("11/22/2009 10:00:00")
event.rrule = {:interval=>1, :freq=>"monthly", :byday=>["4SU"], :until=>Time.zone.parse("6/2/2010")}
if (options[:dtstamp])
event.dtstamp = Time.zone.parse("20100406")
end
end
if (options[:all_events])
cal.event do |event|
event.summary = ""
event.dtstart = Time.zone.parse("10/1/2009 08:30:00")
event.dtend = Time.zone.parse("10/1/2009 10:00:00")
end
cal.event do |event|
event.summary = ""
event.dtstart = Time.zone.parse("1/1/2010 08:30:00")
event.dtend = Time.zone.parse("1/1/2010 10:00:00")
end
cal.event do |event|
event.summary = ""
event.dtstart = Time.zone.parse("4/1/2010 08:30:00")
event.dtend = Time.zone.parse("4/1/2010 10:00:00")
end
cal.event do |event|
event.summary = ""
event.dtstart = Time.zone.parse("12/1/2010 08:30:00")
event.dtend = Time.zone.parse("12/1/2010 10:00:00")
end
end
end
file_name = (options[:all_events] ? "all_events" : "the_event")
file_name << (options[:dtstamp] ? "_dtstamp" : "")
file_name << ".ics"
File.open("#{file_name}", "w+") {|f| f.print calendar.export }
calendar
end
def hour_of_event(summary, calendar)
calendar = RiCal.parse(StringIO.new(calendar.export)).first
event = calendar.events.detect{ |event| event.summary == "8:30AM 4th Sunday" }
event.start_time.hour
end
# allevents, correct time in iCal
p hour_of_event("8:30AM 4th Sunday", create_calendar(:all_events => true, :dtstamp => false))
# theevent_dtstamp, correct time in iCal
p hour_of_event("8:30AM 4th Sunday", create_calendar(:all_events => false, :dtstamp => true))
# theevent, wrong time in iCal
p hour_of_event("8:30AM 4th Sunday", create_calendar(:all_events => false, :dtstamp => false))
# allevents_dtstamp, wrong time in iCal
p hour_of_event("8:30AM 4th Sunday", create_calendar(:all_events => true, :dtstamp => true))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment