Skip to content

Commit 957b58e

Browse files
epologeeJankees van Woezik
andcommitted
Lookup the Rails time zone using the tzid (fails for many zone ids)
Co-authored-by: Jankees van Woezik <[email protected]>
1 parent d62c581 commit 957b58e

File tree

1 file changed

+12
-3
lines changed

1 file changed

+12
-3
lines changed

lib/ice_cube/parsers/ical_parser.rb

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,27 @@ def self.schedule_from_ical(ical_string, options = {})
44
data = {}
55
ical_string.each_line do |line|
66
(property, value) = line.split(":")
7-
(property, _tzid) = property.split(";")
7+
(property, tzid) = property.split(";")
8+
zone = Time.find_zone(tzid) if tzid.present?
89
case property
910
when "DTSTART"
11+
value = { time: value, zone: zone } if zone.present?
1012
data[:start_time] = TimeUtil.deserialize_time(value)
1113
when "DTEND"
14+
value = { time: value, zone: zone } if zone.present?
1215
data[:end_time] = TimeUtil.deserialize_time(value)
1316
when "RDATE"
1417
data[:rtimes] ||= []
15-
data[:rtimes] += value.split(",").map { |v| TimeUtil.deserialize_time(v) }
18+
data[:rtimes] += value.split(",").map do |v|
19+
v = { time: v, zone: zone } if zone.present?
20+
TimeUtil.deserialize_time(v)
21+
end
1622
when "EXDATE"
1723
data[:extimes] ||= []
18-
data[:extimes] += value.split(",").map { |v| TimeUtil.deserialize_time(v) }
24+
data[:extimes] += value.split(",").map do |v|
25+
v = { time: v, zone: zone } if zone.present?
26+
TimeUtil.deserialize_time(v)
27+
end
1928
when "DURATION"
2029
data[:duration] # FIXME
2130
when "RRULE"

0 commit comments

Comments
 (0)