Skip to content

Commit dee5fa8

Browse files
committed
Clean up validate methods
1 parent 96ea94a commit dee5fa8

11 files changed

Lines changed: 57 additions & 70 deletions

lib/ice_cube/validations/count.rb

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,7 @@ def type
3030
end
3131

3232
def validate(time, schedule)
33-
if rule.uses && rule.uses >= count
34-
raise CountExceeded
35-
end
33+
raise CountExceeded if rule.uses && rule.uses >= count
3634
end
3735

3836
def build_s(builder)

lib/ice_cube/validations/daily_interval.rb

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,12 @@ def type
2424
:day
2525
end
2626

27-
def validate(time, schedule)
28-
time_date = Date.new(time.year, time.month, time.day)
29-
start_date = Date.new(schedule.start_time.year, schedule.start_time.month, schedule.start_time.day)
30-
days = time_date - start_date
31-
unless days % interval === 0
32-
interval - (days % interval)
33-
end
27+
def validate(step_time, schedule)
28+
t0, t1 = schedule.start_time, step_time
29+
days = Date.new(t1.year, t1.month, t1.day) -
30+
Date.new(t0.year, t0.month, t0.day)
31+
offset = (days % interval).nonzero?
32+
interval - offset if offset
3433
end
3534

3635
def build_s(builder)

lib/ice_cube/validations/day_of_week.rb

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -26,20 +26,18 @@ def type
2626
:day
2727
end
2828

29-
def validate(time, schedule)
30-
# count the days to the weekday
31-
sum = day >= time.wday ? day - time.wday : 7 - time.wday + day
32-
wrapper = TimeUtil::TimeWrapper.new(time)
33-
wrapper.add :day, sum
34-
# and then count the week until a viable occ
29+
def validate(step_time, schedule)
30+
wday = step_time.wday
31+
offset = (day < wday) ? (7 - wday + day) : (day - wday)
32+
wrapper = TimeUtil::TimeWrapper.new(step_time)
33+
wrapper.add :day, offset
3534
loop do
3635
which_occ, num_occ = TimeUtil.which_occurrence_in_month(wrapper.to_time, day)
37-
this_occ = occ < 0 ? num_occ + occ + 1 : occ
38-
break if which_occ == this_occ
39-
sum += 7
40-
wrapper.add :day, 7 # one week
36+
this_occ = (occ < 0) ? (num_occ + occ + 1) : (occ)
37+
break offset if which_occ == this_occ
38+
wrapper.add :day, 7
39+
offset += 7
4140
end
42-
sum
4341
end
4442

4543
def build_s(builder)

lib/ice_cube/validations/day_of_year.rb

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,11 @@ def type
2525
:day
2626
end
2727

28-
def validate(time, schedule)
29-
days_in_year = TimeUtil.days_in_year(time)
30-
the_day = day < 0 ? day + days_in_year : day
31-
# compute the diff
32-
diff = the_day - time.yday
33-
diff >= 0 ? diff : diff + days_in_year
28+
def validate(step_time, schedule)
29+
days_in_year = TimeUtil.days_in_year(step_time)
30+
yday = day < 0 ? day + days_in_year : day
31+
offset = yday - step_time.yday
32+
offset >= 0 ? offset : offset + days_in_year
3433
end
3534

3635
def build_s(builder)

lib/ice_cube/validations/hourly_interval.rb

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -25,14 +25,13 @@ def dst_adjust?
2525
false
2626
end
2727

28-
def validate(time, schedule)
29-
start_time = schedule.start_time
30-
sec = (time.to_i - time.to_i % ONE_HOUR) -
31-
(start_time.to_i - start_time.to_i % ONE_HOUR)
28+
def validate(step_time, schedule)
29+
t0, t1 = schedule.start_time.to_i, step_time.to_i
30+
sec = (t1 - t1 % ONE_HOUR) -
31+
(t0 - t0 % ONE_HOUR)
3232
hours = sec / ONE_HOUR
33-
unless hours % interval == 0
34-
interval - (hours % interval)
35-
end
33+
offset = (hours % interval).nonzero?
34+
interval - offset if offset
3635
end
3736

3837
def build_s(builder)

lib/ice_cube/validations/minutely_interval.rb

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -25,14 +25,13 @@ def dst_adjust?
2525
false
2626
end
2727

28-
def validate(time, schedule)
29-
start_time = schedule.start_time
30-
sec = (time.to_i - time.to_i % ONE_MINUTE) -
31-
(start_time.to_i - start_time.to_i % ONE_MINUTE)
28+
def validate(step_time, schedule)
29+
t0, t1 = schedule.start_time.to_i, step_time.to_i
30+
sec = (t1 - t1 % ONE_MINUTE) -
31+
(t0 - t0 % ONE_MINUTE)
3232
minutes = sec / ONE_MINUTE
33-
unless minutes % interval == 0
34-
interval - (minutes % interval)
35-
end
33+
offset = (minutes % interval).nonzero?
34+
interval - offset if offset
3635
end
3736

3837
def build_s(builder)

lib/ice_cube/validations/monthly_interval.rb

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,12 @@ def type
2121
:month
2222
end
2323

24-
def validate(time, schedule)
25-
start_time = schedule.start_time
26-
months_to_start = (time.month - start_time.month) + (time.year - start_time.year) * 12
27-
unless months_to_start % interval == 0
28-
interval - (months_to_start % interval)
29-
end
24+
def validate(step_time, schedule)
25+
t0, t1 = schedule.start_time, step_time
26+
months = (t1.month - t0.month) +
27+
(t1.year - t0.year) * 12
28+
offset = (months % interval).nonzero?
29+
interval - offset if offset
3030
end
3131

3232
def build_s(builder)

lib/ice_cube/validations/secondly_interval.rb

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,10 @@ def dst_adjust?
2525
false
2626
end
2727

28-
def validate(time, schedule)
29-
seconds = time.to_i - schedule.start_time.to_i
30-
unless seconds % interval == 0
31-
interval - (seconds % interval)
32-
end
28+
def validate(step_time, schedule)
29+
seconds = step_time.to_i - schedule.start_time.to_i
30+
offset = (seconds % interval).nonzero?
31+
interval - offset if offset
3332
end
3433

3534
def build_s(builder)

lib/ice_cube/validations/until.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@ def type
2929
:dealbreaker
3030
end
3131

32-
def validate(t, schedule)
33-
raise UntilExceeded if t > time
32+
def validate(step_time, schedule)
33+
raise UntilExceeded if step_time > time
3434
end
3535

3636
def build_s(builder)

lib/ice_cube/validations/weekly_interval.rb

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -29,17 +29,14 @@ def type
2929
:day
3030
end
3131

32-
def validate(time, schedule)
33-
date = Date.new(time.year, time.month, time.day)
34-
st = schedule.start_time
35-
start_date = Date.new(st.year, st.month, st.day)
36-
weeks = (
37-
(date - TimeUtil.normalize_wday(date.wday, week_start)) -
38-
(start_date - TimeUtil.normalize_wday(start_date.wday, week_start))
39-
) / 7
40-
unless weeks % interval == 0
41-
(interval - (weeks % interval)) * 7
42-
end
32+
def validate(step_time, schedule)
33+
t0, t1 = schedule.start_time, step_time
34+
d0 = Date.new(t0.year, t0.month, t0.day)
35+
d1 = Date.new(t1.year, t1.month, t1.day)
36+
days = (d1 - TimeUtil.normalize_wday(d1.wday, week_start)) -
37+
(d0 - TimeUtil.normalize_wday(d0.wday, week_start))
38+
offset = ((days / 7) % interval).nonzero?
39+
(interval - offset) * 7 if offset
4340
end
4441

4542
def build_s(builder)

0 commit comments

Comments
 (0)