class Clavius::Calculation::DaysFrom
Attributes
number[R]
schedule[R]
Public Class Methods
new(schedule, number)
click to toggle source
# File lib/clavius/calculation/days_from.rb, line 7 def initialize(schedule, number) @schedule = schedule @number = Integer(number) fail ArgumentError, 'negative number' if @number.negative? end
Public Instance Methods
after(origin)
click to toggle source
# File lib/clavius/calculation/days_from.rb, line 18 def after(origin) calculated_day(:after, origin) end
before(origin)
click to toggle source
# File lib/clavius/calculation/days_from.rb, line 14 def before(origin) calculated_day(:before, origin) end
Private Instance Methods
calculated_day(direction, origin)
click to toggle source
# File lib/clavius/calculation/days_from.rb, line 29 def calculated_day(direction, origin) return zeroeth_day(direction, origin) if number.zero? schedule.public_send(direction, origin).take(number).to_a.last end
zeroeth_day(direction, origin)
click to toggle source
# File lib/clavius/calculation/days_from.rb, line 35 def zeroeth_day(direction, origin) self .class .new(schedule, 1) .public_send(direction, zeroeth_origin(direction, origin)) end
zeroeth_origin(direction, origin)
click to toggle source
# File lib/clavius/calculation/days_from.rb, line 42 def zeroeth_origin(direction, origin) case direction when :before then origin.next_day when :after then origin.prev_day end end