class Biz::Timeline::Abstract
Attributes
periods[R]
Public Class Methods
new(periods)
click to toggle source
# File lib/biz/timeline/abstract.rb, line 7 def initialize(periods) @periods = periods.lazy end
Public Instance Methods
for(duration) { |period| ... }
click to toggle source
# File lib/biz/timeline/abstract.rb, line 23 def for(duration) return enum_for(:for, duration) unless block_given? remaining = duration periods .each do |period| if overflow?(period, remaining) remaining = Duration.new(0) yield period else scoped_period = period & duration_period(period, remaining) remaining -= scoped_period.duration yield scoped_period unless scoped_period.disjoint? break unless remaining.positive? end end end
until(terminus) { |period| ... }
click to toggle source
# File lib/biz/timeline/abstract.rb, line 11 def until(terminus) return enum_for(:until, terminus) unless block_given? periods .map { |period| period & comparison_period(period, terminus) } .each do |period| break if occurred?(period, terminus) yield period unless period.disjoint? end end