ri_cal 0.8.2 → 0.8.4
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +10 -0
- data/Manifest.txt +23 -3
- data/lib/ri_cal.rb +28 -16
- data/lib/ri_cal/component.rb +11 -7
- data/lib/ri_cal/component/alarm.rb +0 -2
- data/lib/ri_cal/component/calendar.rb +0 -2
- data/lib/ri_cal/component/event.rb +0 -2
- data/lib/ri_cal/component/freebusy.rb +0 -2
- data/lib/ri_cal/component/journal.rb +0 -3
- data/lib/ri_cal/component/non_standard.rb +0 -2
- data/lib/ri_cal/component/timezone.rb +5 -5
- data/lib/ri_cal/component/timezone/timezone_period.rb +0 -2
- data/lib/ri_cal/component/todo.rb +0 -2
- data/lib/ri_cal/core_extensions.rb +8 -3
- data/lib/ri_cal/core_extensions/array.rb +1 -1
- data/lib/ri_cal/core_extensions/date.rb +3 -3
- data/lib/ri_cal/core_extensions/date_time.rb +4 -4
- data/lib/ri_cal/core_extensions/object.rb +1 -1
- data/lib/ri_cal/core_extensions/string.rb +1 -1
- data/lib/ri_cal/core_extensions/time.rb +5 -4
- data/lib/ri_cal/fast_date_time.rb +1 -1
- data/lib/ri_cal/{invalid_timezone_identifer.rb → invalid_timezone_identifier.rb} +0 -0
- data/lib/ri_cal/properties.rb +12 -0
- data/lib/ri_cal/property_value.rb +14 -5
- data/lib/ri_cal/property_value/duration.rb +1 -1
- data/lib/ri_cal/property_value/recurrence_rule.rb +13 -4
- data/lib/ri_cal/property_value/recurrence_rule/enumeration_support_methods.rb +16 -13
- data/lib/ri_cal/property_value/recurrence_rule/enumerator.rb +1 -1
- data/lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer.rb +134 -0
- data/lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer/by_day_incrementer.rb +82 -0
- data/lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer/by_hour_incrementer.rb +31 -0
- data/lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer/by_minute_incrementer.rb +32 -0
- data/lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer/by_month_incrementer.rb +52 -0
- data/lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer/by_monthday_incrementer.rb +31 -0
- data/lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer/by_numbered_day_incrementer.rb +34 -0
- data/lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer/by_second_incrementer.rb +32 -0
- data/lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer/by_weekno_incrementer.rb +65 -0
- data/lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer/by_yearday_incrementer.rb +31 -0
- data/lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer/daily_incrementer.rb +28 -0
- data/lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer/frequency_incrementer.rb +71 -0
- data/lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer/hourly_incrementer.rb +23 -0
- data/lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer/list_incrementer.rb +96 -0
- data/lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer/minutely_incrementer.rb +23 -0
- data/lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer/monthly_incrementer.rb +33 -0
- data/lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer/null_sub_cycle_incrementer.rb +39 -0
- data/lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer/secondly_incrementer.rb +28 -0
- data/lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer/weekly_incrementer.rb +37 -0
- data/lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer/yearly_incrementer.rb +57 -0
- data/lib/ri_cal/property_value/recurrence_rule/time_manipulation.rb +42 -0
- data/ri_cal.gemspec +3 -3
- metadata +25 -5
- data/lib/ri_cal/property_value/recurrence_rule/occurence_incrementer.rb +0 -793
- data/sample_ical_files/from_ical_dot_app/test1.ics +0 -38
data/History.txt
CHANGED
@@ -1,3 +1,13 @@
|
|
1
|
+
=== 0.8.3 - 18 September 2009
|
2
|
+
Refactored load structure, should now be conforming to
|
3
|
+
http://weblog.rubyonrails.org/2009/9/1/gem-packaging-best-practices
|
4
|
+
I did finesse the load path issue a bit as a workaround to RSpec not putting lib on $LOADPATH
|
5
|
+
the lib directory will get added to load path IF IT ISN"T ALREADY THERE
|
6
|
+
|
7
|
+
Fixes http://rick_denatale.lighthouseapp.com/projects/30941/tickets/25
|
8
|
+
please clean your code up to be quiet
|
9
|
+
|
10
|
+
Thanks to Ryan for such a courteous problem report.
|
1
11
|
=== 0.8.2 - 4 September 2009
|
2
12
|
Fixes http://rick_denatale.lighthouseapp.com/projects/30941/tickets/23
|
3
13
|
initialization_methodsrb-syntax
|
data/Manifest.txt
CHANGED
@@ -50,10 +50,11 @@ lib/ri_cal/core_extensions/time/week_day_predicates.rb
|
|
50
50
|
lib/ri_cal/fast_date_time.rb
|
51
51
|
lib/ri_cal/floating_timezone.rb
|
52
52
|
lib/ri_cal/invalid_property_value.rb
|
53
|
-
lib/ri_cal/
|
53
|
+
lib/ri_cal/invalid_timezone_identifier.rb
|
54
54
|
lib/ri_cal/occurrence_enumerator.rb
|
55
55
|
lib/ri_cal/occurrence_period.rb
|
56
56
|
lib/ri_cal/parser.rb
|
57
|
+
lib/ri_cal/properties.rb
|
57
58
|
lib/ri_cal/properties/alarm.rb
|
58
59
|
lib/ri_cal/properties/calendar.rb
|
59
60
|
lib/ri_cal/properties/event.rb
|
@@ -81,11 +82,31 @@ lib/ri_cal/property_value/recurrence_rule/enumerator.rb
|
|
81
82
|
lib/ri_cal/property_value/recurrence_rule/initialization_methods.rb
|
82
83
|
lib/ri_cal/property_value/recurrence_rule/negative_setpos_enumerator.rb
|
83
84
|
lib/ri_cal/property_value/recurrence_rule/numbered_span.rb
|
84
|
-
lib/ri_cal/property_value/recurrence_rule/
|
85
|
+
lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer.rb
|
86
|
+
lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer/by_day_incrementer.rb
|
87
|
+
lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer/by_hour_incrementer.rb
|
88
|
+
lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer/by_minute_incrementer.rb
|
89
|
+
lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer/by_month_incrementer.rb
|
90
|
+
lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer/by_monthday_incrementer.rb
|
91
|
+
lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer/by_numbered_day_incrementer.rb
|
92
|
+
lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer/by_second_incrementer.rb
|
93
|
+
lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer/by_weekno_incrementer.rb
|
94
|
+
lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer/by_yearday_incrementer.rb
|
95
|
+
lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer/daily_incrementer.rb
|
96
|
+
lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer/frequency_incrementer.rb
|
97
|
+
lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer/hourly_incrementer.rb
|
98
|
+
lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer/list_incrementer.rb
|
99
|
+
lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer/minutely_incrementer.rb
|
100
|
+
lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer/monthly_incrementer.rb
|
101
|
+
lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer/null_sub_cycle_incrementer.rb
|
102
|
+
lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer/secondly_incrementer.rb
|
103
|
+
lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer/weekly_incrementer.rb
|
104
|
+
lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer/yearly_incrementer.rb
|
85
105
|
lib/ri_cal/property_value/recurrence_rule/recurring_day.rb
|
86
106
|
lib/ri_cal/property_value/recurrence_rule/recurring_month_day.rb
|
87
107
|
lib/ri_cal/property_value/recurrence_rule/recurring_numbered_week.rb
|
88
108
|
lib/ri_cal/property_value/recurrence_rule/recurring_year_day.rb
|
109
|
+
lib/ri_cal/property_value/recurrence_rule/time_manipulation.rb
|
89
110
|
lib/ri_cal/property_value/recurrence_rule/validations.rb
|
90
111
|
lib/ri_cal/property_value/text.rb
|
91
112
|
lib/ri_cal/property_value/uri.rb
|
@@ -98,7 +119,6 @@ performance/psm_big_enum/ical.ics
|
|
98
119
|
performance/psm_big_enum/subject.rb
|
99
120
|
performance/utah_cycling/subject.rb
|
100
121
|
ri_cal.gemspec
|
101
|
-
sample_ical_files/from_ical_dot_app/test1.ics
|
102
122
|
script/benchmark_subject
|
103
123
|
script/console
|
104
124
|
script/destroy
|
data/lib/ri_cal.rb
CHANGED
@@ -9,12 +9,35 @@ module RiCal
|
|
9
9
|
|
10
10
|
my_dir = File.dirname(__FILE__)
|
11
11
|
|
12
|
-
|
13
|
-
|
14
|
-
|
12
|
+
$LOAD_PATH << my_dir unless $LOAD_PATH.include?(my_dir)
|
13
|
+
|
14
|
+
if Object.const_defined?(:ActiveSupport)
|
15
|
+
as = Object.const_get(:ActiveSupport)
|
16
|
+
if as.const_defined?(:TimeWithZone)
|
17
|
+
time_with_zone = as.const_get(:TimeWithZone)
|
18
|
+
end
|
19
|
+
end
|
15
20
|
|
21
|
+
# TimeWithZone will be set to ActiveSupport::TimeWithZone if the activesupport gem is loaded
|
22
|
+
# otherwise it will be nil
|
23
|
+
TimeWithZone = time_with_zone
|
24
|
+
|
25
|
+
autoload :Component, "ri_cal/component.rb"
|
26
|
+
autoload :CoreExtensions, "ri_cal/core_extensions.rb"
|
27
|
+
autoload :FastDateTime, "ri_cal/fast_date_time.rb"
|
28
|
+
autoload :FloatingTimezone, "ri_cal/floating_timezone.rb"
|
29
|
+
autoload :InvalidPropertyValue, "ri_cal/invalid_property_value.rb"
|
30
|
+
autoload :InvalidTimezoneIdentifier, "ri_cal/invalid_timezone_identifier.rb"
|
31
|
+
autoload :OccurrenceEnumerator, "ri_cal/occurrence_enumerator.rb"
|
32
|
+
autoload :OccurrencePeriod, "ri_cal/occurrence_period.rb"
|
33
|
+
autoload :TimezonePeriod, "ri_cal/properties/timezone_period.rb"
|
34
|
+
autoload :Parser, "ri_cal/parser.rb"
|
35
|
+
autoload :Properties, "ri_cal/properties.rb"
|
36
|
+
autoload :PropertyValue, "ri_cal/property_value.rb"
|
37
|
+
autoload :RequiredTimezones, "ri_cal/required_timezones.rb"
|
38
|
+
require "ri_cal/core_extensions.rb"
|
16
39
|
# :stopdoc:
|
17
|
-
VERSION = '0.8.
|
40
|
+
VERSION = '0.8.4'
|
18
41
|
LIBPATH = ::File.expand_path(::File.dirname(__FILE__)) + ::File::SEPARATOR
|
19
42
|
PATH = ::File.dirname(LIBPATH) + ::File::SEPARATOR
|
20
43
|
|
@@ -123,17 +146,6 @@ module RiCal
|
|
123
146
|
Component::TimezonePeriod.new(&init_block)
|
124
147
|
end
|
125
148
|
|
126
|
-
if Object.const_defined?(:ActiveSupport)
|
127
|
-
as = Object.const_get(:ActiveSupport)
|
128
|
-
if as.const_defined?(:TimeWithZone)
|
129
|
-
time_with_zone = as.const_get(:TimeWithZone)
|
130
|
-
end
|
131
|
-
end
|
132
|
-
|
133
|
-
# TimeWithZone will be set to ActiveSupport::TimeWithZone if the activesupport gem is loaded
|
134
|
-
# otherwise it will be nil
|
135
|
-
TimeWithZone = time_with_zone
|
136
|
-
|
137
149
|
# return a new Todo calendar component. If a block is provided it will will be executed in
|
138
150
|
# the context of a builder object which can be used to initialize the properties and alarms of the
|
139
151
|
# new Todo.
|
@@ -171,5 +183,5 @@ end # module RiCal
|
|
171
183
|
end
|
172
184
|
|
173
185
|
|
174
|
-
RiCal.require_all_libs_relative_to(__FILE__)
|
186
|
+
#RiCal.require_all_libs_relative_to(__FILE__)
|
175
187
|
# EOF
|
data/lib/ri_cal/component.rb
CHANGED
@@ -2,6 +2,17 @@ module RiCal
|
|
2
2
|
#- ©2009 Rick DeNatale, All rights reserved. Refer to the file README.txt for the license
|
3
3
|
#
|
4
4
|
class Component #:nodoc:
|
5
|
+
|
6
|
+
autoload :Alarm, "ri_cal/component/alarm.rb"
|
7
|
+
autoload :Calendar, "ri_cal/component/calendar.rb"
|
8
|
+
autoload :Event, "ri_cal/component/event.rb"
|
9
|
+
autoload :Freebusy, "ri_cal/component/freebusy.rb"
|
10
|
+
autoload :Journal, "ri_cal/component/journal.rb"
|
11
|
+
autoload :NonStandard, "ri_cal/component/non_standard.rb"
|
12
|
+
autoload :TZInfoTimezone, "ri_cal/component/t_z_info_timezone.rb"
|
13
|
+
autoload :Timezone, "ri_cal/component/timezone.rb"
|
14
|
+
autoload :Todo, "ri_cal/component/todo.rb"
|
15
|
+
|
5
16
|
class ComponentBuilder #:nodoc:
|
6
17
|
def initialize(component)
|
7
18
|
@component = component
|
@@ -30,8 +41,6 @@ module RiCal
|
|
30
41
|
end
|
31
42
|
end
|
32
43
|
|
33
|
-
autoload :Timezone, "#{File.dirname(__FILE__)}/component/timezone.rb"
|
34
|
-
|
35
44
|
attr_accessor :imported #:nodoc:
|
36
45
|
|
37
46
|
def initialize(parent=nil, entity_name = nil, &init_block) #:nodoc:
|
@@ -241,9 +250,4 @@ module RiCal
|
|
241
250
|
wrapper_calendar.export(stream)
|
242
251
|
end
|
243
252
|
end
|
244
|
-
end
|
245
|
-
|
246
|
-
Dir[File.dirname(__FILE__) + "/component/*.rb"].sort.each do |path|
|
247
|
-
filename = File.basename(path)
|
248
|
-
require path
|
249
253
|
end
|
@@ -1,5 +1,3 @@
|
|
1
|
-
require File.join(File.dirname(__FILE__), %w[.. properties timezone.rb])
|
2
|
-
|
3
1
|
module RiCal
|
4
2
|
class Component
|
5
3
|
#- ©2009 Rick DeNatale, All rights reserved. Refer to the file README.txt for the license
|
@@ -10,6 +8,11 @@ module RiCal
|
|
10
8
|
#
|
11
9
|
# to see the property accessing methods for this class see the RiCal::Properties::Timezone module
|
12
10
|
class Timezone < Component
|
11
|
+
|
12
|
+
autoload :TimezonePeriod, "ri_cal/component/timezone/timezone_period.rb"
|
13
|
+
autoload :StandardPeriod, "ri_cal/component/timezone/standard_period.rb"
|
14
|
+
autoload :DaylightPeriod, "ri_cal/component/timezone/daylight_period.rb"
|
15
|
+
|
13
16
|
include RiCal::Properties::Timezone
|
14
17
|
|
15
18
|
# The identifier of the timezone, e.g. "Europe/Paris".
|
@@ -192,6 +195,3 @@ module RiCal
|
|
192
195
|
end
|
193
196
|
|
194
197
|
|
195
|
-
%w[timezone_period.rb daylight_period.rb standard_period.rb].each do |filename|
|
196
|
-
require "#{File.dirname(__FILE__)}/timezone/#{filename}"
|
197
|
-
end
|
@@ -1,6 +1,11 @@
|
|
1
1
|
#- ©2009 Rick DeNatale
|
2
2
|
#- All rights reserved. Refer to the file README.txt for the license
|
3
3
|
#
|
4
|
-
|
5
|
-
|
6
|
-
|
4
|
+
|
5
|
+
require "ri_cal/core_extensions/array.rb"
|
6
|
+
require "ri_cal/core_extensions/date.rb"
|
7
|
+
require "ri_cal/core_extensions/date_time.rb"
|
8
|
+
require "ri_cal/core_extensions/object.rb"
|
9
|
+
require "ri_cal/core_extensions/string.rb"
|
10
|
+
require "ri_cal/core_extensions/time.rb"
|
11
|
+
|
@@ -1,6 +1,6 @@
|
|
1
|
-
require "
|
2
|
-
require "
|
3
|
-
require "
|
1
|
+
require "ri_cal/core_extensions/date/conversions.rb"
|
2
|
+
require "ri_cal/core_extensions/time/week_day_predicates.rb"
|
3
|
+
require "ri_cal/core_extensions/time/calculations.rb"
|
4
4
|
require 'date'
|
5
5
|
|
6
6
|
class Date #:nodoc:
|
@@ -1,7 +1,7 @@
|
|
1
|
-
require "
|
2
|
-
require "
|
3
|
-
require "
|
4
|
-
require "
|
1
|
+
require "ri_cal/core_extensions/date_time/conversions.rb"
|
2
|
+
require "ri_cal/core_extensions/time/tzid_access.rb"
|
3
|
+
require "ri_cal/core_extensions/time/week_day_predicates.rb"
|
4
|
+
require "ri_cal/core_extensions/time/calculations.rb"
|
5
5
|
require 'date'
|
6
6
|
|
7
7
|
class DateTime #:nodoc:
|
@@ -1,10 +1,11 @@
|
|
1
|
-
require "#{File.dirname(__FILE__)}/time/conversions.rb"
|
2
|
-
require "#{File.dirname(__FILE__)}/time/tzid_access.rb"
|
3
|
-
require "#{File.dirname(__FILE__)}/time/week_day_predicates.rb"
|
4
|
-
require "#{File.dirname(__FILE__)}/time/calculations.rb"
|
5
1
|
#- ©2009 Rick DeNatale
|
6
2
|
#- All rights reserved. Refer to the file README.txt for the license
|
7
3
|
#
|
4
|
+
require "ri_cal/core_extensions/time/conversions.rb"
|
5
|
+
require "ri_cal/core_extensions/time/tzid_access.rb"
|
6
|
+
require "ri_cal/core_extensions/time/week_day_predicates.rb"
|
7
|
+
require "ri_cal/core_extensions/time/calculations.rb"
|
8
|
+
|
8
9
|
class Time #:nodoc:
|
9
10
|
include RiCal::CoreExtensions::Time::WeekDayPredicates
|
10
11
|
include RiCal::CoreExtensions::Time::Calculations
|
@@ -130,7 +130,7 @@ module RiCal
|
|
130
130
|
[day_delta, new_secs_since_bod]
|
131
131
|
elsif new_secs_since_bod > 0
|
132
132
|
[day_delta + (new_secs_since_bod / SECONDS_IN_A_DAY), new_secs_since_bod % SECONDS_IN_A_DAY]
|
133
|
-
else
|
133
|
+
else
|
134
134
|
[day_delta - (1 + new_secs_since_bod.abs / SECONDS_IN_A_DAY),
|
135
135
|
SECONDS_IN_A_DAY - (new_secs_since_bod.abs % SECONDS_IN_A_DAY)]
|
136
136
|
end
|
File without changes
|
@@ -0,0 +1,12 @@
|
|
1
|
+
module RiCal
|
2
|
+
module Properties #:nodoc:
|
3
|
+
autoload :Alarm, "ri_cal/properties/alarm.rb"
|
4
|
+
autoload :Calendar, "ri_cal/properties/calendar.rb"
|
5
|
+
autoload :Event, "ri_cal/properties/event.rb"
|
6
|
+
autoload :Freebusy, "ri_cal/properties/freebusy.rb"
|
7
|
+
autoload :Journal, "ri_cal/properties/journal.rb"
|
8
|
+
autoload :Timezone, "ri_cal/properties/timezone.rb"
|
9
|
+
autoload :TimezonePeriod, "ri_cal/properties/timezone_period.rb"
|
10
|
+
autoload :Todo, "ri_cal/properties/todo.rb"
|
11
|
+
end
|
12
|
+
end
|
@@ -3,6 +3,20 @@ module RiCal
|
|
3
3
|
#
|
4
4
|
# PropertyValue provides common implementation of various RFC 2445 property value types
|
5
5
|
class PropertyValue
|
6
|
+
|
7
|
+
autoload :Array, "ri_cal/property_value/array.rb"
|
8
|
+
autoload :CalAddress, "ri_cal/property_value/cal_address.rb"
|
9
|
+
autoload :Date, "ri_cal/property_value/date.rb"
|
10
|
+
autoload :DateTime, "ri_cal/property_value/date_time.rb"
|
11
|
+
autoload :Duration, "ri_cal/property_value/duration.rb"
|
12
|
+
autoload :Geo, "ri_cal/property_value/geo.rb"
|
13
|
+
autoload :Integer, "ri_cal/property_value/integer.rb"
|
14
|
+
autoload :OccurrenceList, "ri_cal/property_value/occurrence_list.rb"
|
15
|
+
autoload :Period, "ri_cal/property_value/period.rb"
|
16
|
+
autoload :RecurrenceRule, "ri_cal/property_value/recurrence_rule.rb"
|
17
|
+
autoload :Text, "ri_cal/property_value/text.rb"
|
18
|
+
autoload :Uri, "ri_cal/property_value/uri.rb"
|
19
|
+
autoload :UtcOffset, "ri_cal/property_value/utc_offset.rb"
|
6
20
|
|
7
21
|
attr_writer :params, :value #:nodoc:
|
8
22
|
attr_reader :timezone_finder #:nodoc:
|
@@ -142,8 +156,3 @@ module RiCal
|
|
142
156
|
end
|
143
157
|
end
|
144
158
|
end
|
145
|
-
|
146
|
-
Dir[File.dirname(__FILE__) + "/property_value/*.rb"].sort.each do |path|
|
147
|
-
filename = File.basename(path)
|
148
|
-
require path
|
149
|
-
end
|
@@ -1,7 +1,3 @@
|
|
1
|
-
Dir[File.dirname(__FILE__) + "/recurrence_rule/*.rb"].sort.each do |path|
|
2
|
-
require path
|
3
|
-
end
|
4
|
-
|
5
1
|
module RiCal
|
6
2
|
class PropertyValue
|
7
3
|
#- ©2009 Rick DeNatale, All rights reserved. Refer to the file README.txt for the license
|
@@ -11,6 +7,19 @@ module RiCal
|
|
11
7
|
# rfc 2445 section 4.3.10 pp 40-45
|
12
8
|
class RecurrenceRule < PropertyValue
|
13
9
|
|
10
|
+
autoload :EnumerationSupportMethods, "ri_cal/property_value/recurrence_rule/enumeration_support_methods.rb"
|
11
|
+
autoload :OccurrenceIncrementer, "ri_cal/property_value/recurrence_rule/occurrence_incrementer.rb"
|
12
|
+
autoload :Enumerator, "ri_cal/property_value/recurrence_rule/enumerator.rb"
|
13
|
+
autoload :InitializationMethods, "ri_cal/property_value/recurrence_rule/initialization_methods.rb"
|
14
|
+
autoload :NegativeSetposEnumerator, "ri_cal/property_value/recurrence_rule/negative_setpos_enumerator.rb"
|
15
|
+
autoload :NumberedSpan, "ri_cal/property_value/recurrence_rule/numbered_span.rb"
|
16
|
+
autoload :RecurringDay, "ri_cal/property_value/recurrence_rule/recurring_day.rb"
|
17
|
+
autoload :RecurringMonthDay, "ri_cal/property_value/recurrence_rule/recurring_month_day.rb"
|
18
|
+
autoload :RecurringNumberedWeek, "ri_cal/property_value/recurrence_rule/recurring_numbered_week.rb"
|
19
|
+
autoload :RecurringYearDay, "ri_cal/property_value/recurrence_rule/recurring_year_day.rb"
|
20
|
+
autoload :TimeManipulation, "ri_cal/property_value/recurrence_rule/time_manipulation.rb"
|
21
|
+
autoload :Validations, "ri_cal/property_value/recurrence_rule/validations.rb"
|
22
|
+
|
14
23
|
def initialize(parent, value_hash) # :nodoc:
|
15
24
|
@by_list_hash = {}
|
16
25
|
super
|
@@ -16,21 +16,21 @@ module RiCal
|
|
16
16
|
start_time.change(:seconds => 0)
|
17
17
|
when "HOURLY"
|
18
18
|
start_time.change(
|
19
|
-
:minutes => 0,
|
19
|
+
:minutes => 0,
|
20
20
|
:seconds => start_time.sec
|
21
21
|
)
|
22
22
|
when "DAILY"
|
23
23
|
start_time.change(
|
24
24
|
:hour => 0,
|
25
|
-
:minutes => start_time.min,
|
25
|
+
:minutes => start_time.min,
|
26
26
|
:seconds => start_time.sec
|
27
27
|
)
|
28
28
|
when "WEEKLY"
|
29
29
|
start_of_week(time)
|
30
30
|
when "MONTHLY"
|
31
31
|
start_time.change(
|
32
|
-
:day => 1,
|
33
|
-
:hour => start_time.hour,
|
32
|
+
:day => 1,
|
33
|
+
:hour => start_time.hour,
|
34
34
|
:minutes => start_time.min,
|
35
35
|
:seconds => start_time.sec
|
36
36
|
)
|
@@ -47,7 +47,7 @@ module RiCal
|
|
47
47
|
start_time
|
48
48
|
end
|
49
49
|
end
|
50
|
-
|
50
|
+
|
51
51
|
def enumerator(component) # :nodoc:
|
52
52
|
Enumerator.for(self, component, by_list[:bysetpos])
|
53
53
|
end
|
@@ -60,26 +60,26 @@ module RiCal
|
|
60
60
|
case freq
|
61
61
|
when "SECONDLY"
|
62
62
|
[time1.year, time1.month, time1.day, time1.hour, time1.min, time1.sec] ==
|
63
|
-
[time2.year, time2.month, time2.day, time2.hour, time2.min, time2.sec]
|
63
|
+
[time2.year, time2.month, time2.day, time2.hour, time2.min, time2.sec]
|
64
64
|
when "MINUTELY"
|
65
65
|
[time1.year, time1.month, time1.day, time1.hour, time1.min] ==
|
66
|
-
[time2.year, time2.month, time2.day, time2.hour, time2.min]
|
66
|
+
[time2.year, time2.month, time2.day, time2.hour, time2.min]
|
67
67
|
when "HOURLY"
|
68
68
|
[time1.year, time1.month, time1.day, time1.hour] ==
|
69
|
-
[time2.year, time2.month, time2.day, time2.hour]
|
69
|
+
[time2.year, time2.month, time2.day, time2.hour]
|
70
70
|
when "DAILY"
|
71
71
|
[time1.year, time1.month, time1.day] ==
|
72
|
-
[time2.year, time2.month, time2.day]
|
72
|
+
[time2.year, time2.month, time2.day]
|
73
73
|
when "WEEKLY"
|
74
74
|
sow1 = start_of_week(time1)
|
75
75
|
sow2 = start_of_week(time2)
|
76
76
|
[sow1.year, sow1.month, sow1.day] ==
|
77
|
-
[sow2.year, sow2.month, sow2.day]
|
77
|
+
[sow2.year, sow2.month, sow2.day]
|
78
78
|
when "MONTHLY"
|
79
79
|
[time1.year, time1.month] ==
|
80
|
-
[time2.year, time2.month]
|
80
|
+
[time2.year, time2.month]
|
81
81
|
when "YEARLY"
|
82
|
-
time1.year == time2.year
|
82
|
+
time1.year == time2.year
|
83
83
|
end
|
84
84
|
end
|
85
85
|
|
@@ -90,7 +90,10 @@ module RiCal
|
|
90
90
|
nil
|
91
91
|
end
|
92
92
|
end
|
93
|
-
|
93
|
+
|
94
|
+
def incrementer_from_start_time(start_time)
|
95
|
+
RecurrenceRule::OccurrenceIncrementer.from_rrule(self, start_time)
|
96
|
+
end
|
94
97
|
end
|
95
98
|
end
|
96
99
|
end
|