Skip to content

Commit 640d764

Browse files
committed
Some style nits and add from_ical to readme
1 parent 623d7c0 commit 640d764

File tree

2 files changed

+28
-22
lines changed

2 files changed

+28
-22
lines changed

README.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,12 +132,17 @@ the schedule's start_time. Schedule start times are supported as:
132132
ice_cube implements its own hash-based .to_yaml, so you can quickly (and
133133
safely) serialize schedule objects in and out of your data store
134134

135+
It also supports serialization to/from `ICAL`.
136+
135137
``` ruby
136138
yaml = schedule.to_yaml
137139
IceCube::Schedule.from_yaml(yaml)
138140

139141
hash = schedule.to_hash
140142
IceCube::Schedule.from_hash(hash)
143+
144+
ical = schedule.to_ical
145+
IceCube::Schedule.from_ical(ical)
141146
```
142147

143148
---

lib/ice_cube/parsers/ical_parser.rb

Lines changed: 23 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -40,39 +40,40 @@ def self.rule_from_ical(ical)
4040
when 'WKST'
4141
params[:wkst] = TimeUtil.ical_day_to_symbol(value)
4242
when 'BYSECOND'
43-
params[:validations][:second_of_minute] = value.split(',').collect{ |v| v.to_i }
44-
when "BYMINUTE"
45-
params[:validations][:minute_of_hour] = value.split(',').collect{ |v| v.to_i }
46-
when "BYHOUR"
47-
params[:validations][:hour_of_day] = value.split(',').collect{ |v| v.to_i }
48-
when "BYDAY"
43+
params[:validations][:second_of_minute] = value.split(',').collect(&:to_i)
44+
when 'BYMINUTE'
45+
params[:validations][:minute_of_hour] = value.split(',').collect(&:to_i)
46+
when 'BYHOUR'
47+
params[:validations][:hour_of_day] = value.split(',').collect(&:to_i)
48+
when 'BYDAY'
4949
dows = {}
5050
days = []
5151
value.split(',').each do |expr|
52-
day = TimeUtil.ical_day_to_symbol(expr.strip[-2..-1])
53-
if expr.strip.length > 2 # day with occurence
54-
occ = expr[0..-3].to_i
55-
dows[day].nil? ? dows[day] = [occ] : dows[day].push(occ)
56-
days.delete(TimeUtil.sym_to_wday(day))
57-
else
58-
days.push TimeUtil.sym_to_wday(day) if dows[day].nil?
59-
end
52+
day = TimeUtil.ical_day_to_symbol(expr.strip[-2..-1])
53+
if expr.strip.length > 2 # day with occurence
54+
occ = expr[0..-3].to_i
55+
dows[day].nil? ? dows[day] = [occ] : dows[day].push(occ)
56+
days.delete(TimeUtil.sym_to_wday(day))
57+
else
58+
days.push TimeUtil.sym_to_wday(day) if dows[day].nil?
59+
end
6060
end
6161
params[:validations][:day_of_week] = dows unless dows.empty?
6262
params[:validations][:day] = days unless days.empty?
63-
when "BYMONTHDAY"
64-
params[:validations][:day_of_month] = value.split(',').collect{ |v| v.to_i }
65-
when "BYMONTH"
66-
params[:validations][:month_of_year] = value.split(',').collect{ |v| v.to_i }
67-
when "BYYEARDAY"
68-
params[:validations][:day_of_year] = value.split(',').collect{ |v| v.to_i }
69-
when "BYSETPOS"
63+
when 'BYMONTHDAY'
64+
params[:validations][:day_of_month] = value.split(',').collect(&:to_i)
65+
when 'BYMONTH'
66+
params[:validations][:month_of_year] = value.split(',').collect(&:to_i)
67+
when 'BYYEARDAY'
68+
params[:validations][:day_of_year] = value.split(',').collect(&:to_i)
69+
when 'BYSETPOS'
7070
else
71-
raise "Invalid or unsupported rrule command : #{name}"
71+
raise "Invalid or unsupported rrule command: #{name}"
7272
end
7373
end
7474

7575
params[:interval] ||= 1
76+
7677
# WKST only valid for weekly rules
7778
params.delete(:wkst) unless params[:freq] == 'weekly'
7879

0 commit comments

Comments
 (0)