class Date

Public Class Methods

q1(year) click to toggle source
# File lib/scheduling/regularity/quarterly.rb, line 2
def self.q1(year)
  Date.new(year,1)
end
q2(year) click to toggle source
# File lib/scheduling/regularity/quarterly.rb, line 6
def self.q2(year)
  Date.new(year,4)
end
q3(year) click to toggle source
# File lib/scheduling/regularity/quarterly.rb, line 10
def self.q3(year)
  Date.new(year,7)
end
q4(year) click to toggle source
# File lib/scheduling/regularity/quarterly.rb, line 14
def self.q4(year)
  Date.new(year,10)
end
quarterly(year, quarter = 1, qday = 1) click to toggle source
# File lib/scheduling/regularity/quarterly.rb, line 22
def self.quarterly year, quarter = 1, qday = 1
  case quarter
  when 1
    self.q1(year) + (qday - 1)
  when 2
    self.q2(year) + (qday - 1)
  when 3
    self.q3(year) + (qday - 1)
  when 4
    self.q4(year) + (qday - 1)
  else
    raise ArgumentError, "quarter #{quarter} is not 1-4"
  end 
end

Public Instance Methods

next_quarter(count = 1) click to toggle source
# File lib/scheduling/regularity/quarterly.rb, line 41
def next_quarter count = 1
  raise ArgumentError, "count #{count} is < 1" if count < 1
  
  quarter = self.quarter + count % 4
  year = self.year + count / 4
  
  if quarter > 4
    year += 1
    quarter = (quarter - 4)
  end

  Date.quarterly(year, quarter, self.qday)
end
qday() click to toggle source
# File lib/scheduling/regularity/quarterly.rb, line 37
def qday
  1 + (self - Date.quarterly(self.year, quarter)).to_i
end
quarter() click to toggle source
# File lib/scheduling/regularity/quarterly.rb, line 18
def quarter
  1 + ((month - 1) / 3)
end