ice_cube 0.6.10 → 0.6.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/lib/ice_cube/rule.rb CHANGED
@@ -5,6 +5,12 @@ module IceCube
5
5
  attr_reader :occurrence_count, :until_date
6
6
 
7
7
  include ValidationTypes
8
+ include Comparable
9
+
10
+ # Compare based on hash representations
11
+ def <=>(other)
12
+ to_hash <=> other.to_hash
13
+ end
8
14
 
9
15
  def to_hash
10
16
  hash = Hash.new
@@ -168,6 +168,14 @@ module IceCube
168
168
  @rrule_occurrence_heads << RuleOccurrence.new(rule, @start_date, @end_time)
169
169
  end
170
170
 
171
+ # Remove a recurrence rule, returns the removed rules, or nil
172
+ def remove_recurrence_rule(rule)
173
+ raise ArgumentError.new('Argument must be a valid rule') unless rule.class < Rule
174
+ deletions = []
175
+ @rrule_occurrence_heads.delete_if { |h| deletions << h.rule if h.rule == rule }
176
+ deletions
177
+ end
178
+
171
179
  def rrules
172
180
  @rrule_occurrence_heads.map { |h| h.rule }
173
181
  end
@@ -178,6 +186,14 @@ module IceCube
178
186
  @exrule_occurrence_heads << RuleOccurrence.new(rule, @start_date, @end_time)
179
187
  end
180
188
 
189
+ # Remove an exception rule, returns the removed rule, or nil
190
+ def remove_exception_rule(rule)
191
+ raise ArgumentError.new('Argument must be a valid rule') unless rule.class < Rule
192
+ deletions = []
193
+ @exrule_occurrence_heads.delete_if { |h| deletions << h.rule if h.rule == rule }
194
+ deletions
195
+ end
196
+
181
197
  def exrules
182
198
  @exrule_occurrence_heads.map { |h| h.rule }
183
199
  end
@@ -187,11 +203,23 @@ module IceCube
187
203
  @rdates << date unless date.nil?
188
204
  end
189
205
 
206
+ # Remove an individual date from this schedule's recurrence dates
207
+ # return date that was removed, nil otherwise
208
+ def remove_recurrence_date(date)
209
+ @rdates.delete(date)
210
+ end
211
+
190
212
  # Add an individual date exception to this schedule
191
213
  def add_exception_date(date)
192
214
  @exdates << date unless date.nil?
193
215
  end
194
216
 
217
+ # Remove an individual date exception from this schedule's exception dates
218
+ # return date that was removed, nil otherwise
219
+ def remove_exception_date(date)
220
+ @exdates.delete(date)
221
+ end
222
+
195
223
  def occurrences_between(begin_time, end_time)
196
224
  # adjust to the propert end date
197
225
  end_time = @end_time if @end_time && @end_time < end_time
@@ -209,10 +237,15 @@ module IceCube
209
237
  end
210
238
 
211
239
  alias :rdate :add_recurrence_date
212
- alias rrule add_recurrence_rule
213
- alias exdate add_exception_date
214
- alias exrule add_exception_rule
215
-
240
+ alias :rrule :add_recurrence_rule
241
+ alias :exdate :add_exception_date
242
+ alias :exrule :add_exception_rule
243
+ alias :recurrence_dates :rdates
244
+ alias :exception_dates :exdates
245
+ alias :remove_rdate :remove_recurrence_date
246
+ alias :remove_exdate :remove_exception_date
247
+ alias :remove_rrule :remove_recurrence_rule
248
+ alias :remove_exrule :remove_exception_rule
216
249
 
217
250
  private
218
251
 
@@ -1,5 +1,5 @@
1
1
  module IceCube
2
2
 
3
- VERSION = '0.6.10'
3
+ VERSION = '0.6.11'
4
4
 
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ice_cube
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.10
4
+ version: 0.6.11
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -14,7 +14,7 @@ default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rspec
17
- requirement: &70363623868640 !ruby/object:Gem::Requirement
17
+ requirement: &70126045890940 !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
20
  - - ! '>='
@@ -22,7 +22,7 @@ dependencies:
22
22
  version: '0'
23
23
  type: :development
24
24
  prerelease: false
25
- version_requirements: *70363623868640
25
+ version_requirements: *70126045890940
26
26
  description: ice_cube is a recurring date library for Ruby. It allows for quick,
27
27
  programatic expansion of recurring date rules.
28
28
  email: john@crepezzi.com