class Biz::Periods::Abstract
Attributes
boundary[R]
intervals[R]
origin[R]
schedule[R]
shifts[R]
Public Class Methods
new(schedule, origin)
click to toggle source
Calls superclass method
# File lib/biz/periods/abstract.rb, line 7 def initialize(schedule, origin) @schedule = schedule @origin = origin super(periods) end
Public Instance Methods
timeline()
click to toggle source
# File lib/biz/periods/abstract.rb, line 14 def timeline Timeline::Proxy.new(self) end
Private Instance Methods
active_periods(period)
click to toggle source
# File lib/biz/periods/abstract.rb, line 43 def active_periods(period) schedule .breaks .reduce([period]) { |periods, break_period| periods.flat_map { |active_period| active_period / break_period } } end
on_holiday?(period)
click to toggle source
# File lib/biz/periods/abstract.rb, line 51 def on_holiday?(period) schedule .holidays .any? { |holiday| holiday.contains?(period.start_time) } end
periods()
click to toggle source
# File lib/biz/periods/abstract.rb, line 26 def periods Linear.new(week_periods, shifts, selector) .lazy .map { |period| period & boundary } .reject(&:disjoint?) .flat_map { |period| active_periods(period) } .reject { |period| on_holiday?(period) } end
week_periods()
click to toggle source
# File lib/biz/periods/abstract.rb, line 35 def week_periods weeks .lazy .flat_map { |week| intervals.map { |interval| interval.to_time_segment(week) } } end