ri_cal 0.8.5 → 0.8.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (38) hide show
  1. data/History.txt +7 -0
  2. data/Rakefile +59 -46
  3. data/VERSION +1 -0
  4. data/component_attributes/component_property_defs.yml +3 -3
  5. data/lib/ri_cal/component/t_z_info_timezone.rb +17 -3
  6. data/lib/ri_cal/core_extensions/date/conversions.rb +0 -14
  7. data/lib/ri_cal/core_extensions/date_time/conversions.rb +0 -6
  8. data/lib/ri_cal/fast_date_time.rb +8 -0
  9. data/lib/ri_cal/properties/alarm.rb +8 -8
  10. data/lib/ri_cal/properties/calendar.rb +3 -3
  11. data/lib/ri_cal/properties/event.rb +62 -65
  12. data/lib/ri_cal/properties/freebusy.rb +19 -20
  13. data/lib/ri_cal/properties/journal.rb +50 -53
  14. data/lib/ri_cal/properties/timezone.rb +10 -11
  15. data/lib/ri_cal/properties/timezone_period.rb +10 -10
  16. data/lib/ri_cal/properties/todo.rb +68 -71
  17. data/lib/ri_cal/property_value.rb +1 -0
  18. data/lib/ri_cal/property_value/date.rb +4 -0
  19. data/lib/ri_cal/property_value/date_time.rb +8 -0
  20. data/lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer.rb +4 -3
  21. data/lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer/by_day_incrementer.rb +5 -1
  22. data/lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer/by_monthday_incrementer.rb +1 -1
  23. data/lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer/by_numbered_day_incrementer.rb +5 -1
  24. data/lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer/by_weekno_incrementer.rb +5 -1
  25. data/lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer/frequency_incrementer.rb +9 -0
  26. data/lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer/list_incrementer.rb +11 -1
  27. data/lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer/null_sub_cycle_incrementer.rb +4 -0
  28. data/lib/ri_cal/property_value/recurrence_rule/recurring_month_day.rb +5 -1
  29. data/lib/ri_cal/property_value/recurrence_rule/recurring_year_day.rb +5 -1
  30. data/lib/ri_cal/property_value/zulu_date_time.rb +34 -0
  31. data/parked_specs/ri_cal/claudio_a_bug_spec.rb +100 -0
  32. data/ri_cal.gemspec +218 -21
  33. data/spec/ri_cal/component/event_spec.rb +17 -0
  34. data/spec/ri_cal/component/t_z_info_timezone_spec.rb +5 -4
  35. data/spec/ri_cal/fast_date_time_spec.rb +10 -0
  36. data/spec/ri_cal/inf_loop_spec.rb +78 -0
  37. data/spec/ri_cal/parser_spec.rb +3 -3
  38. metadata +61 -60
@@ -11,6 +11,10 @@ module RiCal
11
11
 
12
12
  def self.add_outer_incrementer(incrementer)
13
13
  end
14
+
15
+ def self.unneeded?(candidate)
16
+ true
17
+ end
14
18
 
15
19
  def self.first_within_outer_cycle(previous_occurrence, outer_cycle_range)
16
20
  outer_cycle_range.first
@@ -42,9 +42,13 @@ module RiCal
42
42
  def target_date_time_for(date_time)
43
43
  matches_for(date_time)[0]
44
44
  end
45
+
46
+ def fixed_day?
47
+ @source > 0
48
+ end
45
49
 
46
50
  def target_for(date_or_time)
47
- if @source > 0
51
+ if fixed_day?
48
52
  @source
49
53
  else
50
54
  date_or_time.days_in_month + @source + 1
@@ -31,9 +31,13 @@ module RiCal
31
31
  def target_date_time_for(date_time)
32
32
  matches_for(date_time)[0]
33
33
  end
34
+
35
+ def fixed_day?
36
+ @source > 0
37
+ end
34
38
 
35
39
  def target_for(date_or_time)
36
- if @source > 0
40
+ if fixed_day?
37
41
  @source
38
42
  else
39
43
  length_of_year(date_or_time.year) + @source + 1
@@ -0,0 +1,34 @@
1
+ require 'date'
2
+ module RiCal
3
+ class PropertyValue
4
+ #- ©2009 Rick DeNatale, All rights reserved. Refer to the file README.txt for the license
5
+ #
6
+ # RiCal::PropertyValue::CalAddress represents an icalendar CalAddress property value
7
+ # which is defined in RFC 2445 section 4.3.5 pp 35-37
8
+ class ZuluDateTime < PropertyValue::DateTime
9
+
10
+ def tzid
11
+ "UTC"
12
+ end
13
+
14
+ def value=(val) # :nodoc:
15
+ if DateTime === val
16
+ @date_time_value = val
17
+ else
18
+ super(val)
19
+ end
20
+ @date_time_value = @date_time_value.utc if @date_time_value
21
+ end
22
+
23
+ def to_ri_cal_zulu_date_time
24
+ self
25
+ end
26
+
27
+ def self.convert(timezone_finder, ruby_object) # :nodoc:
28
+ result = super
29
+ result.to_ri_cal_zulu_date_time
30
+ end
31
+
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,100 @@
1
+ #- ©2009 Rick DeNatale, All rights reserved. Refer to the file README.txt for the license
2
+
3
+ require 'rubygems'
4
+ require File.join(File.dirname(__FILE__), %w[.. spec_helper])
5
+
6
+ describe "RiCal TimeZone problem" do
7
+ it "should keep the original calendar timezone intact" do
8
+ original_calendar = RiCal.parse_string(original_calendar_contents).first
9
+ puts "*"*40
10
+ puts original_calendar
11
+ puts "*"*40
12
+ reply_calendar = reply original_calendar
13
+ #reply_calendar = RiCal.parse_string(reply_calendar_contents).first
14
+ puts reply_calendar
15
+ puts "*"*40
16
+
17
+ original_event = original_calendar.events.first
18
+ reply_event = reply_calendar.events.first
19
+ reply_event.start_time.to_s.should == original_event.start_time.to_s
20
+ end
21
+ end
22
+
23
+ private
24
+
25
+ # This is the calendar contents generated when we send the message >>#reply to the original calendar.
26
+ def reply_calendar_contents
27
+ "BEGIN:VCALENDAR
28
+ PRODID;X-RICAL-TZSOURCE=TZINFO:-//com.denhaven2/NONSGML ri_cal gem//EN
29
+ CALSCALE:GREGORIAN
30
+ VERSION:2.0
31
+ METHOD:REPLY
32
+ BEGIN:VTIMEZONE
33
+ TZID;X-RICAL-TZSOURCE=TZINFO:America/Argentina/Buenos_Aires
34
+ BEGIN:STANDARD
35
+ DTSTART:20090314T230000
36
+ RDATE:20090314T230000
37
+ TZOFFSETFROM:-0200
38
+ TZOFFSETTO:-0300
39
+ TZNAME:ART
40
+ END:STANDARD
41
+ END:VTIMEZONE
42
+ BEGIN:VEVENT
43
+ CREATED;VALUE=DATE-TIME:20091217T155557Z
44
+ DTEND;TZID=America/Argentina/Buenos_Aires;VALUE=DATE-TIME:20091227T010000
45
+ STATUS:CONFIRMED
46
+ LAST-MODIFIED;TZID=America/Argentina/Buenos_Aires;VALUE=DATE-TIME:2009121
47
+ 7T173400
48
+ DTSTART;TZID=America/Argentina/Buenos_Aires;VALUE=DATE-TIME:20091227T0000
49
+ 00
50
+ ATTENDEE;CN=PoketyPoke;PARTSTAT=ACCEPTED;ROLE=REQ-PARTICIPANT:barbarazopp
51
+ o@gmail.com
52
+ UID:1693CA3B-C528-4E5A-87FB-CDFAEC0EC662
53
+ ORGANIZER:mailto:nasif.lucas@gmail.com
54
+ DESCRIPTION:
55
+ SUMMARY:testing.. Event
56
+ SEQUENCE:3
57
+ LOCATION:
58
+ END:VEVENT
59
+ END:VCALENDAR".strip
60
+ end
61
+
62
+ def original_calendar_contents
63
+ "BEGIN:VCALENDAR\nPRODID:-//Apple Inc.//iCal 4.0.1//EN\nCALSCALE:GREGORIAN\nVERSION:2.0\nMETHOD:REQUEST\nBEGIN:VEVENT\nTRANSP:TRANSPARENT\nDTSTAMP;VALUE=DATE-TIME:20091217T155800Z\nCREATED;VALUE=DATE-TIME:20091217T155557Z\nDTEND;TZID=America/Argentina/Buenos_Aires;VALUE=DATE-TIME:20091227T010000\nDTSTART;TZID=America/Argentina/Buenos_Aires;VALUE=DATE-TIME:20091227T0000\n 00\nATTENDEE;CN=Lucas Nasif;CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED:mailto:nasif.\n lucas@gmail.com\nATTENDEE;CN=barbarazoppo@gmail.com;CUTYPE=INDIVIDUAL;EMAIL=barbarazoppo@g\n mail.com;PARTSTAT=NEEDS-ACTION;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:bar\n barazoppo@gmail.com\nUID:1693CA3B-C528-4E5A-87FB-CDFAEC0EC662\nORGANIZER;CN=Lucas Nasif:mailto:nasif.lucas@gmail.com\nSUMMARY:testing.. Event\nSEQUENCE:3\nEND:VEVENT\nBEGIN:VTIMEZONE\nTZID:America/Argentina/Buenos_Aires\nBEGIN:STANDARD\nTZOFFSETTO:-0300\nDTSTART;VALUE=DATE-TIME:20080316T000000\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=3SU\nTZOFFSETFROM:-0200\nTZNAME:GMT-03:00\nEND:STANDARD\nBEGIN:DAYLIGHT\nTZOFFSETTO:-0200\nDTSTART;VALUE=DATE-TIME:20081019T000000\nRRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=3SU\nTZOFFSETFROM:-0300\nTZNAME:GMT-02:00\nEND:DAYLIGHT\nEND:VTIMEZONE\nEND:VCALENDAR\n".strip
64
+ end
65
+
66
+ def reply(original_calendar)
67
+ icalendar = RiCal.Calendar do | calendar |
68
+
69
+ calendar.icalendar_method = "REPLY"
70
+ calendar.default_tzid = original_calendar.default_tzid
71
+
72
+ calendar.event do | event |
73
+
74
+ original_event = original_calendar.events.first
75
+ event.created = original_event.created
76
+ event.dtstart = original_event.start_time
77
+ event.dtend = original_event.finish_time
78
+ event.organizer = original_event.organizer
79
+ event.location = original_event.location.to_s
80
+ event.uid_property = original_event.uid_property
81
+
82
+ options = {'ROLE' => 'REQ-PARTICIPANT',
83
+ 'PARTSTAT' => 'ACCEPTED',
84
+ 'CN' => 'SomeName...'}
85
+
86
+ attendee_property = RiCal::PropertyValue::CalAddress.new(nil,
87
+ :value => @attendant,
88
+ :params => options)
89
+
90
+ event.attendee_property = attendee_property
91
+ event.description = original_event.description.to_s
92
+ event.summary = original_event.summary.to_s
93
+
94
+ event.sequence_property = original_event.sequence_property
95
+ event.status = "CONFIRMED"
96
+ event.last_modified = DateTime.parse(Time.now.to_s)
97
+ end
98
+ end
99
+ icalendar
100
+ end
@@ -1,12 +1,15 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in RakeFile, and run the gemspec command
1
4
  # -*- encoding: utf-8 -*-
2
5
 
3
6
  Gem::Specification.new do |s|
4
7
  s.name = %q{ri_cal}
5
- s.version = "0.8.5"
8
+ s.version = "0.8.6"
6
9
 
7
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
- s.authors = ["author=Rick DeNatale"]
9
- s.date = %q{2009-09-27}
11
+ s.authors = ["Rick DeNatale"]
12
+ s.date = %q{2010-04-15}
10
13
  s.default_executable = %q{ri_cal}
11
14
  s.description = %q{A new Ruby implementation of RFC2445 iCalendar.
12
15
 
@@ -15,34 +18,228 @@ but do not support important things like enumerating occurrences of repeating ev
15
18
 
16
19
  This is a clean-slate implementation of RFC2445.
17
20
 
18
- A Google group for discussion of this library has been set up http://groups.google.com/group/rical_gem}
19
- s.email = ["rick.denatale@gmail.com"]
21
+ A Google group for discussion of this library has been set up http://groups.google.com/group/rical_gem
22
+ }
23
+ s.email = %q{rick.denatale@gmail.com}
20
24
  s.executables = ["ri_cal"]
21
- s.extra_rdoc_files = ["History.txt", "Manifest.txt", "README.txt", "copyrights.txt", "docs/draft-ietf-calsify-2446bis-08.txt", "docs/draft-ietf-calsify-rfc2445bis-09.txt", "docs/incrementers.txt"]
22
- s.files = ["History.txt", "Manifest.txt", "README.txt", "Rakefile", "bin/ri_cal", "component_attributes/alarm.yml", "component_attributes/calendar.yml", "component_attributes/component_property_defs.yml", "component_attributes/event.yml", "component_attributes/freebusy.yml", "component_attributes/journal.yml", "component_attributes/timezone.yml", "component_attributes/timezone_period.yml", "component_attributes/todo.yml", "copyrights.txt", "docs/draft-ietf-calsify-2446bis-08.txt", "docs/draft-ietf-calsify-rfc2445bis-09.txt", "docs/incrementers.txt", "docs/rfc2445.pdf", "lib/ri_cal.rb", "lib/ri_cal/component.rb", "lib/ri_cal/component/alarm.rb", "lib/ri_cal/component/calendar.rb", "lib/ri_cal/component/event.rb", "lib/ri_cal/component/freebusy.rb", "lib/ri_cal/component/journal.rb", "lib/ri_cal/component/non_standard.rb", "lib/ri_cal/component/t_z_info_timezone.rb", "lib/ri_cal/component/timezone.rb", "lib/ri_cal/component/timezone/daylight_period.rb", "lib/ri_cal/component/timezone/standard_period.rb", "lib/ri_cal/component/timezone/timezone_period.rb", "lib/ri_cal/component/todo.rb", "lib/ri_cal/core_extensions.rb", "lib/ri_cal/core_extensions/array.rb", "lib/ri_cal/core_extensions/array/conversions.rb", "lib/ri_cal/core_extensions/date.rb", "lib/ri_cal/core_extensions/date/conversions.rb", "lib/ri_cal/core_extensions/date_time.rb", "lib/ri_cal/core_extensions/date_time/conversions.rb", "lib/ri_cal/core_extensions/object.rb", "lib/ri_cal/core_extensions/object/conversions.rb", "lib/ri_cal/core_extensions/string.rb", "lib/ri_cal/core_extensions/string/conversions.rb", "lib/ri_cal/core_extensions/time.rb", "lib/ri_cal/core_extensions/time/calculations.rb", "lib/ri_cal/core_extensions/time/conversions.rb", "lib/ri_cal/core_extensions/time/tzid_access.rb", "lib/ri_cal/core_extensions/time/week_day_predicates.rb", "lib/ri_cal/fast_date_time.rb", "lib/ri_cal/floating_timezone.rb", "lib/ri_cal/invalid_property_value.rb", "lib/ri_cal/invalid_timezone_identifier.rb", "lib/ri_cal/occurrence_enumerator.rb", "lib/ri_cal/occurrence_period.rb", "lib/ri_cal/parser.rb", "lib/ri_cal/properties.rb", "lib/ri_cal/properties/alarm.rb", "lib/ri_cal/properties/calendar.rb", "lib/ri_cal/properties/event.rb", "lib/ri_cal/properties/freebusy.rb", "lib/ri_cal/properties/journal.rb", "lib/ri_cal/properties/timezone.rb", "lib/ri_cal/properties/timezone_period.rb", "lib/ri_cal/properties/todo.rb", "lib/ri_cal/property_value.rb", "lib/ri_cal/property_value/array.rb", "lib/ri_cal/property_value/cal_address.rb", "lib/ri_cal/property_value/date.rb", "lib/ri_cal/property_value/date_time.rb", "lib/ri_cal/property_value/date_time/additive_methods.rb", "lib/ri_cal/property_value/date_time/time_machine.rb", "lib/ri_cal/property_value/date_time/timezone_support.rb", "lib/ri_cal/property_value/duration.rb", "lib/ri_cal/property_value/geo.rb", "lib/ri_cal/property_value/integer.rb", "lib/ri_cal/property_value/occurrence_list.rb", "lib/ri_cal/property_value/period.rb", "lib/ri_cal/property_value/recurrence_rule.rb", "lib/ri_cal/property_value/recurrence_rule/enumeration_support_methods.rb", "lib/ri_cal/property_value/recurrence_rule/enumerator.rb", "lib/ri_cal/property_value/recurrence_rule/initialization_methods.rb", "lib/ri_cal/property_value/recurrence_rule/negative_setpos_enumerator.rb", "lib/ri_cal/property_value/recurrence_rule/numbered_span.rb", "lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer.rb", "lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer/by_day_incrementer.rb", "lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer/by_hour_incrementer.rb", "lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer/by_minute_incrementer.rb", "lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer/by_month_incrementer.rb", "lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer/by_monthday_incrementer.rb", "lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer/by_numbered_day_incrementer.rb", "lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer/by_second_incrementer.rb", "lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer/by_weekno_incrementer.rb", "lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer/by_yearday_incrementer.rb", "lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer/daily_incrementer.rb", "lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer/frequency_incrementer.rb", "lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer/hourly_incrementer.rb", "lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer/list_incrementer.rb", "lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer/minutely_incrementer.rb", "lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer/monthly_incrementer.rb", "lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer/null_sub_cycle_incrementer.rb", "lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer/secondly_incrementer.rb", "lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer/weekly_incrementer.rb", "lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer/yearly_incrementer.rb", "lib/ri_cal/property_value/recurrence_rule/recurring_day.rb", "lib/ri_cal/property_value/recurrence_rule/recurring_month_day.rb", "lib/ri_cal/property_value/recurrence_rule/recurring_numbered_week.rb", "lib/ri_cal/property_value/recurrence_rule/recurring_year_day.rb", "lib/ri_cal/property_value/recurrence_rule/time_manipulation.rb", "lib/ri_cal/property_value/recurrence_rule/validations.rb", "lib/ri_cal/property_value/text.rb", "lib/ri_cal/property_value/uri.rb", "lib/ri_cal/property_value/utc_offset.rb", "lib/ri_cal/required_timezones.rb", "performance/empty_propval/subject.rb", "performance/paris_eastern/subject.rb", "performance/penultimate_weekday/subject.rb", "performance/psm_big_enum/ical.ics", "performance/psm_big_enum/subject.rb", "performance/utah_cycling/subject.rb", "ri_cal.gemspec", "script/benchmark_subject", "script/console", "script/destroy", "script/generate", "script/profile_subject", "script/txt2html", "spec/ri_cal/bugreports_spec.rb", "spec/ri_cal/component/alarm_spec.rb", "spec/ri_cal/component/calendar_spec.rb", "spec/ri_cal/component/event_spec.rb", "spec/ri_cal/component/freebusy_spec.rb", "spec/ri_cal/component/journal_spec.rb", "spec/ri_cal/component/t_z_info_timezone_spec.rb", "spec/ri_cal/component/timezone_spec.rb", "spec/ri_cal/component/todo_spec.rb", "spec/ri_cal/component_spec.rb", "spec/ri_cal/core_extensions/string/conversions_spec.rb", "spec/ri_cal/core_extensions/time/calculations_spec.rb", "spec/ri_cal/core_extensions/time/week_day_predicates_spec.rb", "spec/ri_cal/fast_date_time_spec.rb", "spec/ri_cal/occurrence_enumerator_spec.rb", "spec/ri_cal/parser_spec.rb", "spec/ri_cal/property_value/date_spec.rb", "spec/ri_cal/property_value/date_time_spec.rb", "spec/ri_cal/property_value/duration_spec.rb", "spec/ri_cal/property_value/occurrence_list_spec.rb", "spec/ri_cal/property_value/period_spec.rb", "spec/ri_cal/property_value/recurrence_rule/recurring_year_day_spec.rb", "spec/ri_cal/property_value/recurrence_rule_spec.rb", "spec/ri_cal/property_value/text_spec.rb", "spec/ri_cal/property_value/utc_offset_spec.rb", "spec/ri_cal/property_value_spec.rb", "spec/ri_cal/required_timezones_spec.rb", "spec/ri_cal_spec.rb", "spec/spec.opts", "spec/spec_helper.rb", "tasks/gem_loader/load_active_support.rb", "tasks/gem_loader/load_tzinfo_gem.rb", "tasks/ri_cal.rake", "tasks/spec.rake"]
23
- s.homepage = %q{http://ri-cal.rubyforge.org/}
24
- s.rdoc_options = ["--main", "README.txt"]
25
+ s.extra_rdoc_files = [
26
+ "History.txt",
27
+ "README.txt",
28
+ "copyrights.txt"
29
+ ]
30
+ s.files = [
31
+ "History.txt",
32
+ "Manifest.txt",
33
+ "README.txt",
34
+ "Rakefile",
35
+ "VERSION",
36
+ "bin/ri_cal",
37
+ "component_attributes/alarm.yml",
38
+ "component_attributes/calendar.yml",
39
+ "component_attributes/component_property_defs.yml",
40
+ "component_attributes/event.yml",
41
+ "component_attributes/freebusy.yml",
42
+ "component_attributes/journal.yml",
43
+ "component_attributes/timezone.yml",
44
+ "component_attributes/timezone_period.yml",
45
+ "component_attributes/todo.yml",
46
+ "copyrights.txt",
47
+ "docs/draft-ietf-calsify-2446bis-08.txt",
48
+ "docs/draft-ietf-calsify-rfc2445bis-09.txt",
49
+ "docs/incrementers.txt",
50
+ "docs/rfc2445.pdf",
51
+ "lib/ri_cal.rb",
52
+ "lib/ri_cal/component.rb",
53
+ "lib/ri_cal/component/alarm.rb",
54
+ "lib/ri_cal/component/calendar.rb",
55
+ "lib/ri_cal/component/event.rb",
56
+ "lib/ri_cal/component/freebusy.rb",
57
+ "lib/ri_cal/component/journal.rb",
58
+ "lib/ri_cal/component/non_standard.rb",
59
+ "lib/ri_cal/component/t_z_info_timezone.rb",
60
+ "lib/ri_cal/component/timezone.rb",
61
+ "lib/ri_cal/component/timezone/daylight_period.rb",
62
+ "lib/ri_cal/component/timezone/standard_period.rb",
63
+ "lib/ri_cal/component/timezone/timezone_period.rb",
64
+ "lib/ri_cal/component/todo.rb",
65
+ "lib/ri_cal/core_extensions.rb",
66
+ "lib/ri_cal/core_extensions/array.rb",
67
+ "lib/ri_cal/core_extensions/array/conversions.rb",
68
+ "lib/ri_cal/core_extensions/date.rb",
69
+ "lib/ri_cal/core_extensions/date/conversions.rb",
70
+ "lib/ri_cal/core_extensions/date_time.rb",
71
+ "lib/ri_cal/core_extensions/date_time/conversions.rb",
72
+ "lib/ri_cal/core_extensions/object.rb",
73
+ "lib/ri_cal/core_extensions/object/conversions.rb",
74
+ "lib/ri_cal/core_extensions/string.rb",
75
+ "lib/ri_cal/core_extensions/string/conversions.rb",
76
+ "lib/ri_cal/core_extensions/time.rb",
77
+ "lib/ri_cal/core_extensions/time/calculations.rb",
78
+ "lib/ri_cal/core_extensions/time/conversions.rb",
79
+ "lib/ri_cal/core_extensions/time/tzid_access.rb",
80
+ "lib/ri_cal/core_extensions/time/week_day_predicates.rb",
81
+ "lib/ri_cal/fast_date_time.rb",
82
+ "lib/ri_cal/floating_timezone.rb",
83
+ "lib/ri_cal/invalid_property_value.rb",
84
+ "lib/ri_cal/invalid_timezone_identifier.rb",
85
+ "lib/ri_cal/occurrence_enumerator.rb",
86
+ "lib/ri_cal/occurrence_period.rb",
87
+ "lib/ri_cal/parser.rb",
88
+ "lib/ri_cal/properties.rb",
89
+ "lib/ri_cal/properties/alarm.rb",
90
+ "lib/ri_cal/properties/calendar.rb",
91
+ "lib/ri_cal/properties/event.rb",
92
+ "lib/ri_cal/properties/freebusy.rb",
93
+ "lib/ri_cal/properties/journal.rb",
94
+ "lib/ri_cal/properties/timezone.rb",
95
+ "lib/ri_cal/properties/timezone_period.rb",
96
+ "lib/ri_cal/properties/todo.rb",
97
+ "lib/ri_cal/property_value.rb",
98
+ "lib/ri_cal/property_value/array.rb",
99
+ "lib/ri_cal/property_value/cal_address.rb",
100
+ "lib/ri_cal/property_value/date.rb",
101
+ "lib/ri_cal/property_value/date_time.rb",
102
+ "lib/ri_cal/property_value/date_time/additive_methods.rb",
103
+ "lib/ri_cal/property_value/date_time/time_machine.rb",
104
+ "lib/ri_cal/property_value/date_time/timezone_support.rb",
105
+ "lib/ri_cal/property_value/duration.rb",
106
+ "lib/ri_cal/property_value/geo.rb",
107
+ "lib/ri_cal/property_value/integer.rb",
108
+ "lib/ri_cal/property_value/occurrence_list.rb",
109
+ "lib/ri_cal/property_value/period.rb",
110
+ "lib/ri_cal/property_value/recurrence_rule.rb",
111
+ "lib/ri_cal/property_value/recurrence_rule/enumeration_support_methods.rb",
112
+ "lib/ri_cal/property_value/recurrence_rule/enumerator.rb",
113
+ "lib/ri_cal/property_value/recurrence_rule/initialization_methods.rb",
114
+ "lib/ri_cal/property_value/recurrence_rule/negative_setpos_enumerator.rb",
115
+ "lib/ri_cal/property_value/recurrence_rule/numbered_span.rb",
116
+ "lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer.rb",
117
+ "lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer/by_day_incrementer.rb",
118
+ "lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer/by_hour_incrementer.rb",
119
+ "lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer/by_minute_incrementer.rb",
120
+ "lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer/by_month_incrementer.rb",
121
+ "lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer/by_monthday_incrementer.rb",
122
+ "lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer/by_numbered_day_incrementer.rb",
123
+ "lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer/by_second_incrementer.rb",
124
+ "lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer/by_weekno_incrementer.rb",
125
+ "lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer/by_yearday_incrementer.rb",
126
+ "lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer/daily_incrementer.rb",
127
+ "lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer/frequency_incrementer.rb",
128
+ "lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer/hourly_incrementer.rb",
129
+ "lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer/list_incrementer.rb",
130
+ "lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer/minutely_incrementer.rb",
131
+ "lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer/monthly_incrementer.rb",
132
+ "lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer/null_sub_cycle_incrementer.rb",
133
+ "lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer/secondly_incrementer.rb",
134
+ "lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer/weekly_incrementer.rb",
135
+ "lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer/yearly_incrementer.rb",
136
+ "lib/ri_cal/property_value/recurrence_rule/recurring_day.rb",
137
+ "lib/ri_cal/property_value/recurrence_rule/recurring_month_day.rb",
138
+ "lib/ri_cal/property_value/recurrence_rule/recurring_numbered_week.rb",
139
+ "lib/ri_cal/property_value/recurrence_rule/recurring_year_day.rb",
140
+ "lib/ri_cal/property_value/recurrence_rule/time_manipulation.rb",
141
+ "lib/ri_cal/property_value/recurrence_rule/validations.rb",
142
+ "lib/ri_cal/property_value/text.rb",
143
+ "lib/ri_cal/property_value/uri.rb",
144
+ "lib/ri_cal/property_value/utc_offset.rb",
145
+ "lib/ri_cal/property_value/zulu_date_time.rb",
146
+ "lib/ri_cal/required_timezones.rb",
147
+ "parked_specs/ri_cal/claudio_a_bug_spec.rb",
148
+ "performance/empty_propval/subject.rb",
149
+ "performance/paris_eastern/subject.rb",
150
+ "performance/penultimate_weekday/subject.rb",
151
+ "performance/psm_big_enum/ical.ics",
152
+ "performance/psm_big_enum/subject.rb",
153
+ "performance/utah_cycling/subject.rb",
154
+ "ri_cal.gemspec",
155
+ "script/benchmark_subject",
156
+ "script/console",
157
+ "script/destroy",
158
+ "script/generate",
159
+ "script/profile_subject",
160
+ "script/txt2html",
161
+ "spec/ri_cal/bugreports_spec.rb",
162
+ "spec/ri_cal/component/alarm_spec.rb",
163
+ "spec/ri_cal/component/calendar_spec.rb",
164
+ "spec/ri_cal/component/event_spec.rb",
165
+ "spec/ri_cal/component/freebusy_spec.rb",
166
+ "spec/ri_cal/component/journal_spec.rb",
167
+ "spec/ri_cal/component/t_z_info_timezone_spec.rb",
168
+ "spec/ri_cal/component/timezone_spec.rb",
169
+ "spec/ri_cal/component/todo_spec.rb",
170
+ "spec/ri_cal/component_spec.rb",
171
+ "spec/ri_cal/core_extensions/string/conversions_spec.rb",
172
+ "spec/ri_cal/core_extensions/time/calculations_spec.rb",
173
+ "spec/ri_cal/core_extensions/time/week_day_predicates_spec.rb",
174
+ "spec/ri_cal/fast_date_time_spec.rb",
175
+ "spec/ri_cal/inf_loop_spec.rb",
176
+ "spec/ri_cal/occurrence_enumerator_spec.rb",
177
+ "spec/ri_cal/parser_spec.rb",
178
+ "spec/ri_cal/property_value/date_spec.rb",
179
+ "spec/ri_cal/property_value/date_time_spec.rb",
180
+ "spec/ri_cal/property_value/duration_spec.rb",
181
+ "spec/ri_cal/property_value/occurrence_list_spec.rb",
182
+ "spec/ri_cal/property_value/period_spec.rb",
183
+ "spec/ri_cal/property_value/recurrence_rule/recurring_year_day_spec.rb",
184
+ "spec/ri_cal/property_value/recurrence_rule_spec.rb",
185
+ "spec/ri_cal/property_value/text_spec.rb",
186
+ "spec/ri_cal/property_value/utc_offset_spec.rb",
187
+ "spec/ri_cal/property_value_spec.rb",
188
+ "spec/ri_cal/required_timezones_spec.rb",
189
+ "spec/ri_cal_spec.rb",
190
+ "spec/spec.opts",
191
+ "spec/spec_helper.rb",
192
+ "tasks/gem_loader/load_active_support.rb",
193
+ "tasks/gem_loader/load_tzinfo_gem.rb",
194
+ "tasks/ri_cal.rake",
195
+ "tasks/spec.rake"
196
+ ]
197
+ s.homepage = %q{http://github.com/rubyredrick/ri_cal}
198
+ s.rdoc_options = ["--charset=UTF-8"]
25
199
  s.require_paths = ["lib"]
26
- s.rubyforge_project = %q{ri-cal}
27
- s.rubygems_version = %q{1.3.5}
28
- s.summary = %q{A new Ruby implementation of RFC2445 iCalendar}
200
+ s.rubygems_version = %q{1.3.6}
201
+ s.summary = %q{a new implementation of RFC2445 in Ruby}
202
+ s.test_files = [
203
+ "spec/ri_cal/bugreports_spec.rb",
204
+ "spec/ri_cal/component/alarm_spec.rb",
205
+ "spec/ri_cal/component/calendar_spec.rb",
206
+ "spec/ri_cal/component/event_spec.rb",
207
+ "spec/ri_cal/component/freebusy_spec.rb",
208
+ "spec/ri_cal/component/journal_spec.rb",
209
+ "spec/ri_cal/component/t_z_info_timezone_spec.rb",
210
+ "spec/ri_cal/component/timezone_spec.rb",
211
+ "spec/ri_cal/component/todo_spec.rb",
212
+ "spec/ri_cal/component_spec.rb",
213
+ "spec/ri_cal/core_extensions/string/conversions_spec.rb",
214
+ "spec/ri_cal/core_extensions/time/calculations_spec.rb",
215
+ "spec/ri_cal/core_extensions/time/week_day_predicates_spec.rb",
216
+ "spec/ri_cal/fast_date_time_spec.rb",
217
+ "spec/ri_cal/inf_loop_spec.rb",
218
+ "spec/ri_cal/occurrence_enumerator_spec.rb",
219
+ "spec/ri_cal/parser_spec.rb",
220
+ "spec/ri_cal/property_value/date_spec.rb",
221
+ "spec/ri_cal/property_value/date_time_spec.rb",
222
+ "spec/ri_cal/property_value/duration_spec.rb",
223
+ "spec/ri_cal/property_value/occurrence_list_spec.rb",
224
+ "spec/ri_cal/property_value/period_spec.rb",
225
+ "spec/ri_cal/property_value/recurrence_rule/recurring_year_day_spec.rb",
226
+ "spec/ri_cal/property_value/recurrence_rule_spec.rb",
227
+ "spec/ri_cal/property_value/text_spec.rb",
228
+ "spec/ri_cal/property_value/utc_offset_spec.rb",
229
+ "spec/ri_cal/property_value_spec.rb",
230
+ "spec/ri_cal/required_timezones_spec.rb",
231
+ "spec/ri_cal_spec.rb",
232
+ "spec/spec_helper.rb"
233
+ ]
29
234
 
30
235
  if s.respond_to? :specification_version then
31
236
  current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
32
237
  s.specification_version = 3
33
238
 
34
239
  if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
35
- s.add_development_dependency(%q<newgem>, [">= 1.5.2"])
36
- s.add_development_dependency(%q<ruby-prof>, [">= 0"])
37
- s.add_development_dependency(%q<hoe>, [">= 2.3.3"])
38
240
  else
39
- s.add_dependency(%q<newgem>, [">= 1.5.2"])
40
- s.add_dependency(%q<ruby-prof>, [">= 0"])
41
- s.add_dependency(%q<hoe>, [">= 2.3.3"])
42
241
  end
43
242
  else
44
- s.add_dependency(%q<newgem>, [">= 1.5.2"])
45
- s.add_dependency(%q<ruby-prof>, [">= 0"])
46
- s.add_dependency(%q<hoe>, [">= 2.3.3"])
47
243
  end
48
244
  end
245
+
@@ -5,6 +5,23 @@ require File.join(File.dirname(__FILE__), %w[.. .. spec_helper])
5
5
 
6
6
  describe RiCal::Component::Event do
7
7
 
8
+ context "with change management properties" do
9
+ it "should use zulu time for all change management datetime properties" do
10
+ new_york_offset = Rational(-1, 6)
11
+ cal = RiCal.Calendar
12
+ event = RiCal::Component::Event.new(cal)
13
+ event.dtstamp = result_time_in_zone(2010, 4, 1, 9, 23, 45, "America/New_York", new_york_offset)
14
+ event.created = result_time_in_zone(2010, 4, 1, 9, 23, 45, "America/New_York", new_york_offset)
15
+ event.last_modified = result_time_in_zone(2010, 4, 1, 12, 23, 45, "America/New_York", new_york_offset)
16
+ event.to_s.should == "BEGIN:VEVENT
17
+ CREATED;VALUE=DATE-TIME:20100401T132345Z
18
+ DTSTAMP;VALUE=DATE-TIME:20100401T132345Z
19
+ LAST-MODIFIED;VALUE=DATE-TIME:20100401T162345Z
20
+ END:VEVENT
21
+ "
22
+ end
23
+ end
24
+
8
25
  context ".finish_time" do
9
26
  it "should be the end of the start day for an event with a date dtstart and no dtend or duration" do
10
27
  @it = RiCal.Event do |evt|