Module: FiscalDate::ArithmeticExt

Included in:
FiscalDate
Defined in:
lib/fiscal_date/arithmetic_ext.rb

Instance Method Summary collapse

Instance Method Details

#+(quarters) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/fiscal_date/arithmetic_ext.rb', line 17

def +(quarters)
  return self if quarters.zero?
  
  years = quarters / 4
  quarters = (quarters % 4) + self.quarter

  # We can use modulo but we'd have to map the quarters 1-4 to 0-3,
  # this seemed easier.
  if quarters > 4
    years += 1
    quarters -= 4
  end

  self.class.new(self.year + years, quarters)
end

#-(fd_or_integer) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
15
# File 'lib/fiscal_date/arithmetic_ext.rb', line 4

def -(fd_or_integer)
  case fd_or_integer
  when Integer
    self.+(-fd_or_integer)
  when FiscalDate
    year_diff = year - fd_or_integer.year
    quarter_diff = quarter - fd_or_integer.quarter
    year_diff * 4 + quarter_diff
  else
    raise(ArgumentError, "must pass an integer or another FiscalDate")
  end
end