active-icalendar-events 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/active-icalendar-events.rb +33 -13
  3. metadata +1 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 981c99140882554d70998f2b1225ce89cb47b80fb7471172c62c215204aecdb5
4
- data.tar.gz: 5d58a68cb6195024aedb6a0d461c8c03a98a1f88ad5d4c0f0250e4fe08e5d077
3
+ metadata.gz: aec07e1857f72267287393b71a8d3cf600a8ad92814ef862c99b8693890e473e
4
+ data.tar.gz: 95720ab414ecd1df386c6f7c1c9f7664313c1efb3437b65d464616c18c9b3a68
5
5
  SHA512:
6
- metadata.gz: 426bb70b73ab75023013c15040498a1fc69605c5c39f08d06a83457e8e29467074064c7058083dd7223d4afad2be5a3d5c281d8a289b79d36560eff124b57ad4
7
- data.tar.gz: be2600c740997701ffeab23b6eb51e844cefe31912f8c7baa9b383501a4505e50381e52c0fa844be76aad25ca2591403770999809ff0e7d0f88974f15b435083
6
+ metadata.gz: bf9a2bd544578257b52702aaaa71900116cf4a97ecc1b02e35a326d2550806350956fb4dcf17b5dd9e2ca66b8deef33e6a43197db8412a87198ba4f49aaaee76
7
+ data.tar.gz: ca6940f8a84da10a6f2c9477ee525507a105b8691afabc3e113999ab2b3584ddb8a95f918109cc6018d440fee7375c28dbb78242e49820f554bdd4c7b1de63b3
@@ -94,23 +94,48 @@ module ActiveIcalendarEvents
94
94
  icalendar_data.first.events.map { |e|
95
95
  event_start = e.dtstart
96
96
  if event_start.is_a?(Icalendar::Values::Date)
97
- timezone = ActiveSupport::TimeZone.new(e.parent.timezones.first.tzid.to_s)
97
+ timezone ||= ActiveSupport::TimeZone.new(e.parent.timezones.first.tzid.to_s)
98
98
  event_start = timezone.local(event_start.year, event_start.month, event_start.day)
99
99
  end
100
100
 
101
101
  event_end = e.dtend
102
102
  if event_end.is_a?(Icalendar::Values::Date)
103
- timezone = ActiveSupport::TimeZone.new(e.parent.timezones.first.tzid.to_s)
103
+ timezone ||= ActiveSupport::TimeZone.new(e.parent.timezones.first.tzid.to_s)
104
104
  event_end = timezone.local(event_end.year, event_end.month, event_end.day)
105
105
  end
106
106
 
107
+ excluding_dates = e.exdate.map { |d|
108
+ if d.is_a?(Icalendar::Values::Date)
109
+ timezone ||= ActiveSupport::TimeZone.new(e.parent.timezones.first.tzid.to_s)
110
+ timezone.local(d.year, d.month, d.day)
111
+ else
112
+ d
113
+ end
114
+ }
115
+
116
+ recurrence_dates = e.rdate.map { |d|
117
+ if d.is_a?(Icalendar::Values::Date)
118
+ timezone ||= ActiveSupport::TimeZone.new(e.parent.timezones.first.tzid.to_s)
119
+ timezone.local(d.year, d.month, d.day)
120
+ else
121
+ d
122
+ end
123
+ }
124
+
125
+ e.rrule.each { |rrule|
126
+ if !rrule.until.nil?
127
+ timezone ||= ActiveSupport::TimeZone.new(e.parent.timezones.first.tzid.to_s)
128
+ rrule.until = timezone.parse(rrule.until)
129
+ end
130
+ }
131
+
107
132
  {
108
133
  name: e.summary,
109
134
  event_start: event_start,
110
135
  event_end: event_end,
111
136
  recurrence_rule: e.rrule,
112
- recurrence_dates: e.rdate,
113
- excluding_dates: e.exdate,
137
+ recurrence_dates: recurrence_dates,
138
+ excluding_dates: excluding_dates,
114
139
  recurrence_id: e.recurrence_id,
115
140
  uid: e.uid
116
141
  }
@@ -362,18 +387,13 @@ module ActiveIcalendarEvents
362
387
  return name if is_event_active?(datetime, recurrence_event_start, recurrence_event_end)
363
388
  }
364
389
 
365
- until_datetime = nil
366
- if !recurrence_rule.until.nil?
367
- until_datetime = DateTime.parse(recurrence_rule.until)
368
- end
369
-
370
390
  case recurrence_rule.frequency
371
391
  when "DAILY"
372
392
  return name if is_daily_event_active_for_datetime?(
373
393
  datetime,
374
394
  event_start,
375
395
  event_end,
376
- until_datetime,
396
+ recurrence_rule.until,
377
397
  recurrence_rule.count,
378
398
  recurrence_rule.interval.nil? ? 1 : recurrence_rule.interval,
379
399
  excluding_dates,
@@ -384,7 +404,7 @@ module ActiveIcalendarEvents
384
404
  datetime,
385
405
  event_start,
386
406
  event_end,
387
- until_datetime,
407
+ recurrence_rule.until,
388
408
  recurrence_rule.count,
389
409
  recurrence_rule.interval.nil? ? 1 : recurrence_rule.interval,
390
410
  recurrence_rule.by_day,
@@ -396,7 +416,7 @@ module ActiveIcalendarEvents
396
416
  datetime,
397
417
  event_start,
398
418
  event_end,
399
- until_datetime,
419
+ recurrence_rule.until,
400
420
  recurrence_rule.count,
401
421
  recurrence_rule.interval.nil? ? 1 : recurrence_rule.interval,
402
422
  recurrence_rule.by_day,
@@ -409,7 +429,7 @@ module ActiveIcalendarEvents
409
429
  datetime,
410
430
  event_start,
411
431
  event_end,
412
- until_datetime,
432
+ recurrence_rule.until,
413
433
  recurrence_rule.count,
414
434
  recurrence_rule.interval.nil? ? 1 : recurrence_rule.interval,
415
435
  excluding_dates,
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active-icalendar-events
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - William Starling