Class: Date

Inherits:
Object
  • Object
show all
Defined in:
lib/scheduling/regularity/quarterly.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.q1(year) ⇒ Object



2
3
4
# File 'lib/scheduling/regularity/quarterly.rb', line 2

def self.q1(year)
  Date.new(year,1)
end

.q2(year) ⇒ Object



6
7
8
# File 'lib/scheduling/regularity/quarterly.rb', line 6

def self.q2(year)
  Date.new(year,4)
end

.q3(year) ⇒ Object



10
11
12
# File 'lib/scheduling/regularity/quarterly.rb', line 10

def self.q3(year)
  Date.new(year,7)
end

.q4(year) ⇒ Object



14
15
16
# File 'lib/scheduling/regularity/quarterly.rb', line 14

def self.q4(year)
  Date.new(year,10)
end

.quarterly(year, quarter = 1, qday = 1) ⇒ Object



22
23
24
25
26
27
28
29
30
31
32
33
34
35
# 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

Instance Method Details

#next_quarter(count = 1) ⇒ Object

Raises:

  • (ArgumentError)


41
42
43
44
45
46
47
48
49
50
51
52
53
# 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

#qdayObject



37
38
39
# File 'lib/scheduling/regularity/quarterly.rb', line 37

def qday
  1 + (self - Date.quarterly(self.year, quarter)).to_i
end

#quarterObject



18
19
20
# File 'lib/scheduling/regularity/quarterly.rb', line 18

def quarter
  1 + ((month - 1) / 3)
end