icalendar-recurrence 0.0.1 → 1.0

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/README.md CHANGED
@@ -4,14 +4,10 @@ Adds event recurrence to the [icalendar gem](https://github.com/icalendar/icalen
4
4
 
5
5
  ## Install
6
6
 
7
- _Note: This only works against the 2.0beta release of the icalendar gem._
8
-
9
- **Until icalendar 2.0beta is released, use git repos in your Gemfile:**
10
-
7
+ _Note: Works with 2.0.0beta.1 (or newer) icalendar gem. If you're using icalendar <=1.5.4, take a look at the [new code](https://github.com/icalendar/icalendar/tree/2.0beta) before you switch over._
11
8
 
12
9
  ```ruby
13
- gem "icalendar", git: "https://github.com/icalendar/icalendar", branch: "2.0beta"
14
- gem "icalendar-recurrence", git: "https://github.com/icalendar/icalendar-recurrence"
10
+ gem "icalendar-recurrence"
15
11
  ```
16
12
 
17
13
  and run `bundle install` from your shell.
@@ -35,7 +31,7 @@ An event occurrence is a simple struct object with `start_time` and `end_time` m
35
31
 
36
32
  ```ruby
37
33
  occurrence.start_time # => 2014-02-01 00:00:00 -0800
38
- occurrence.end_time # => 2014-02-02 00:00:00 -0800
34
+ occurrence.end_time # => 2014-02-02 00:00:00 -0800
39
35
  ```
40
36
 
41
37
  ### Daily event with excluded date (inline ICS example)
@@ -17,7 +17,7 @@ Gem::Specification.new do |spec|
17
17
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
18
18
  spec.require_paths = ["lib"]
19
19
 
20
- spec.add_runtime_dependency 'icalendar', '~> 2.0.0.beta.1'
20
+ spec.add_runtime_dependency 'icalendar', '~> 2.0'
21
21
  spec.add_runtime_dependency 'ice_cube', '~> 0.11.1'
22
22
 
23
23
  spec.add_development_dependency 'rake', '~> 10.2.1'
@@ -25,7 +25,11 @@ module Icalendar
25
25
  end
26
26
 
27
27
  def end_time
28
- TimeUtil.to_time(event.end)
28
+ if event.end
29
+ TimeUtil.to_time(event.end)
30
+ else
31
+ start_time + convert_duration_to_seconds(event.duration)
32
+ end
29
33
  end
30
34
 
31
35
  def occurrences_between(begin_time, closing_time)
@@ -103,6 +107,7 @@ module Icalendar
103
107
  end
104
108
 
105
109
  def base_ice_cube_recurrence_rule(frequency, interval)
110
+ interval ||= 1
106
111
  if frequency == "DAILY"
107
112
  IceCube::DailyRule.new(interval)
108
113
  elsif frequency == "WEEKLY"
@@ -143,6 +148,14 @@ module Icalendar
143
148
  match = ical_byday.match(/(\d*)([A-Z]{2})/)
144
149
  {day_code: match[2], position: match[1].to_i}
145
150
  end
151
+
152
+ def convert_duration_to_seconds(ical_duration)
153
+ return 0 unless ical_duration
154
+
155
+ conversion_rates = { seconds: 1, minutes: 60, hours: 3600, days: 86400, weeks: 604800 }
156
+ seconds = conversion_rates.inject(0) { |sum, (unit, multiplier)| sum + ical_duration[unit] * multiplier }
157
+ seconds * (ical_duration.past ? -1 : 1)
158
+ end
146
159
  end
147
160
  end
148
161
  end
@@ -1,5 +1,5 @@
1
1
  module Icalendar
2
2
  module Recurrence
3
- VERSION = "0.0.1"
3
+ VERSION = "1.0"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: icalendar-recurrence
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: '1.0'
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-03-31 00:00:00.000000000 Z
12
+ date: 2014-09-23 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: icalendar
@@ -18,7 +18,7 @@ dependencies:
18
18
  requirements:
19
19
  - - ~>
20
20
  - !ruby/object:Gem::Version
21
- version: 2.0.0.beta.1
21
+ version: '2.0'
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
@@ -26,7 +26,7 @@ dependencies:
26
26
  requirements:
27
27
  - - ~>
28
28
  - !ruby/object:Gem::Version
29
- version: 2.0.0.beta.1
29
+ version: '2.0'
30
30
  - !ruby/object:Gem::Dependency
31
31
  name: ice_cube
32
32
  requirement: !ruby/object:Gem::Requirement
@@ -226,18 +226,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
226
226
  - - ! '>='
227
227
  - !ruby/object:Gem::Version
228
228
  version: '0'
229
- segments:
230
- - 0
231
- hash: 3806049795842359372
232
229
  required_rubygems_version: !ruby/object:Gem::Requirement
233
230
  none: false
234
231
  requirements:
235
232
  - - ! '>='
236
233
  - !ruby/object:Gem::Version
237
234
  version: '0'
238
- segments:
239
- - 0
240
- hash: 3806049795842359372
241
235
  requirements: []
242
236
  rubyforge_project:
243
237
  rubygems_version: 1.8.23