class Mhc::DateFrame::Base

Public Class Methods

new(start_date, interval = 1, wkst = 1) click to toggle source
# File lib/mhc/date_frame.rb, line 11
def initialize(start_date, interval = 1, wkst = 1)
  @start_date, @interval, @wkst = start_date, interval, wkst
  rewind
end

Public Instance Methods

each() { |date| ... } click to toggle source
# File lib/mhc/date_frame.rb, line 16
def each
  loop do
    date = self.next
    yield date
  end
end
forward_to(date) click to toggle source

go forward to the frame in which DATE is involved

# File lib/mhc/date_frame.rb, line 39
def forward_to(date)
  rewind
  frames = frames_between(@frame_start, date)
  cycles = (frames + (@interval - 1)) / @interval
  self.next(cycles) if cycles > 0
  return self
end
next(cycles = 1) click to toggle source
# File lib/mhc/date_frame.rb, line 23
def next(cycles = 1)
  frame = @frame_start
  @frame_start = next_frame_start(cycles)
  return frame
end
peek() click to toggle source
# File lib/mhc/date_frame.rb, line 29
def peek
  @frame_start
end
rewind() click to toggle source
# File lib/mhc/date_frame.rb, line 33
def rewind
  @frame_start = beginning_of_frame(@start_date)
  return self
end

Private Instance Methods

beginning_of_frame(date) click to toggle source
# File lib/mhc/date_frame.rb, line 52
def beginning_of_frame(date)
  raise "should be defined in subclasses"
end
frames_between(date1, date2) click to toggle source
# File lib/mhc/date_frame.rb, line 56
def frames_between(date1, date2)
  raise "should be defined in subclasses"
end
next_frame_start(cycles = 1) click to toggle source
# File lib/mhc/date_frame.rb, line 48
def next_frame_start(cycles = 1)
  raise "should be defined in subclasses"
end