Skip to content

Commit d698e84

Browse files
committed
Remove access to illogical rule parts
Some combinations of rule parts do not apply. Rather than exposing all possible validations on all recurrence rule types, limit to ones that produce results.
1 parent 4ba3297 commit d698e84

File tree

11 files changed

+69
-15
lines changed

11 files changed

+69
-15
lines changed

lib/ice_cube/rules/daily_rule.rb

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,15 @@ module IceCube
22

33
class DailyRule < ValidatedRule
44

5+
include Validations::HourOfDay
6+
include Validations::MinuteOfHour
7+
include Validations::SecondOfMinute
8+
include Validations::DayOfMonth
9+
include Validations::DayOfWeek
10+
include Validations::Day
11+
include Validations::MonthOfYear
12+
# include Validations::DayOfYear # n/a
13+
514
include Validations::DailyInterval
615

716
def initialize(interval = 1)

lib/ice_cube/rules/hourly_rule.rb

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,15 @@ module IceCube
22

33
class HourlyRule < ValidatedRule
44

5+
include Validations::HourOfDay
6+
include Validations::MinuteOfHour
7+
include Validations::SecondOfMinute
8+
include Validations::DayOfMonth
9+
include Validations::DayOfWeek
10+
include Validations::Day
11+
include Validations::MonthOfYear
12+
include Validations::DayOfYear
13+
514
include Validations::HourlyInterval
615

716
def initialize(interval = 1)

lib/ice_cube/rules/minutely_rule.rb

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,15 @@ module IceCube
22

33
class MinutelyRule < ValidatedRule
44

5+
include Validations::HourOfDay
6+
include Validations::MinuteOfHour
7+
include Validations::SecondOfMinute
8+
include Validations::DayOfMonth
9+
include Validations::DayOfWeek
10+
include Validations::Day
11+
include Validations::MonthOfYear
12+
include Validations::DayOfYear
13+
514
include Validations::MinutelyInterval
615

716
def initialize(interval = 1)

lib/ice_cube/rules/monthly_rule.rb

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,15 @@ module IceCube
22

33
class MonthlyRule < ValidatedRule
44

5+
include Validations::HourOfDay
6+
include Validations::MinuteOfHour
7+
include Validations::SecondOfMinute
8+
include Validations::DayOfMonth
9+
include Validations::DayOfWeek
10+
include Validations::Day
11+
include Validations::MonthOfYear
12+
# include Validations::DayOfYear # n/a
13+
514
include Validations::MonthlyInterval
615

716
def initialize(interval = 1)

lib/ice_cube/rules/secondly_rule.rb

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,15 @@ module IceCube
22

33
class SecondlyRule < ValidatedRule
44

5+
include Validations::HourOfDay
6+
include Validations::MinuteOfHour
7+
include Validations::SecondOfMinute
8+
include Validations::DayOfMonth
9+
include Validations::DayOfWeek
10+
include Validations::Day
11+
include Validations::MonthOfYear
12+
include Validations::DayOfYear
13+
514
include Validations::SecondlyInterval
615

716
def initialize(interval = 1)

lib/ice_cube/rules/weekly_rule.rb

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,15 @@ module IceCube
22

33
class WeeklyRule < ValidatedRule
44

5+
include Validations::HourOfDay
6+
include Validations::MinuteOfHour
7+
include Validations::SecondOfMinute
8+
# include Validations::DayOfMonth # n/a
9+
include Validations::DayOfWeek
10+
include Validations::Day
11+
include Validations::MonthOfYear
12+
# include Validations::DayOfYear # n/a
13+
514
include Validations::WeeklyInterval
615

716
attr_reader :week_start

lib/ice_cube/rules/yearly_rule.rb

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,15 @@ module IceCube
22

33
class YearlyRule < ValidatedRule
44

5+
include Validations::HourOfDay
6+
include Validations::MinuteOfHour
7+
include Validations::SecondOfMinute
8+
include Validations::DayOfMonth
9+
include Validations::DayOfWeek
10+
include Validations::Day
11+
include Validations::MonthOfYear
12+
include Validations::DayOfYear
13+
514
include Validations::YearlyInterval
615

716
def initialize(interval = 1)

lib/ice_cube/validated_rule.rb

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,6 @@ class ValidatedRule < Rule
44

55
include Validations::ScheduleLock
66

7-
include Validations::HourOfDay
8-
include Validations::MinuteOfHour
9-
include Validations::SecondOfMinute
10-
include Validations::DayOfMonth
11-
include Validations::DayOfWeek
12-
include Validations::Day
13-
include Validations::MonthOfYear
14-
include Validations::DayOfYear
15-
167
include Validations::Count
178
include Validations::Until
189

spec/examples/dst_spec.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -248,10 +248,10 @@ module IceCube
248248
expect(schedule.first(3)).to eq([Time.local(2010, 3, 7, 12, 0, 0), Time.local(2010, 3, 14, 12, 0, 0), Time.local(2010, 3, 21, 12, 0, 0)])
249249
end
250250

251-
it "local - should make dates on monthly (day of year) inverval over dst - github issue 5" do
251+
it "local - should make dates on yearly (day of year) inverval over dst - github issue 5" do
252252
start_time = Time.local(2010, 3, 7, 12, 0, 0)
253253
schedule = Schedule.new(start_time)
254-
schedule.add_recurrence_rule Rule.monthly.day_of_year(1)
254+
schedule.add_recurrence_rule Rule.yearly.day_of_year(1)
255255
expect(schedule.first(3)).to eq([Time.local(2011, 1, 1, 12, 0, 0), Time.local(2012, 1, 1, 12, 0, 0), Time.local(2013, 1, 1, 12, 0, 0)])
256256
end
257257

spec/examples/from_ical_spec.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,8 @@ module IceCube
4646
end
4747

4848
it 'should be able to parse a .day_of_year rule' do
49-
rule = IceCube::Rule.from_ical("FREQ=DAILY;BYYEARDAY=100,200")
50-
expect(rule).to eq(IceCube::Rule.daily.day_of_year(100,200))
49+
rule = IceCube::Rule.from_ical("FREQ=YEARLY;BYYEARDAY=100,200")
50+
expect(rule).to eq(IceCube::Rule.yearly.day_of_year(100,200))
5151
end
5252

5353
it 'should be able to serialize a .month_of_year rule' do

0 commit comments

Comments
 (0)