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