Created
April 6, 2010 21:08
-
-
Save mikehale/358115 to your computer and use it in GitHub Desktop.
rical bug
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/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