class Scheduling::Monthly

Public Class Methods

new(mday) click to toggle source
# File lib/scheduling/regularity/monthly.rb, line 5
def initialize mday
  @mday = mday
  if mday > 28
    @mday = 28
  end
end

Public Instance Methods

occurances(date_range) click to toggle source
# File lib/scheduling/regularity/monthly.rb, line 12
def occurances date_range
  raise RangeDecreasingError if date_range.decreasing?

  cur = Date.new(date_range.min.year, date_range.min.month, @mday)

  start = date_range.min
  if cur < start
    cur = cur.next_month
  end

  occurances = []

  stop = date_range.last
  if date_range.exclude_end?
    stop -= 1
  end

  while cur <= stop
    occurances.push cur
    cur = cur.next_month
  end

  return occurances
end