Class: Remi::Transform::DateDiff

Inherits:
Remi::Transform show all
Defined in:
lib/remi/transform.rb

Overview

Public: Used to calculate differences between dates by a given measure.

measure - One of :days, :months, or :years. (default: :days).

Examples:

DateDiff.new(:months).to_proc.call([Date.new(2016,1,30), Date.new(2016,3,1)]) # => 2

Instance Attribute Summary

Attributes inherited from Remi::Transform

#multi_arg, #source_metadata, #target_metadata

Instance Method Summary collapse

Methods inherited from Remi::Transform

#call, #to_proc

Constructor Details

#initialize(measure = :days, *args, **kargs, &block) ⇒ DateDiff

Returns a new instance of DateDiff.



335
336
337
338
339
# File 'lib/remi/transform.rb', line 335

def initialize(measure = :days, *args, **kargs, &block)
  super
  @multi_args = true
  @measure = measure
end

Instance Method Details

#transform(from_date, to_date) ⇒ Object



341
342
343
344
345
346
347
348
349
350
351
352
353
# File 'lib/remi/transform.rb', line 341

def transform(from_date, to_date)

  case @measure.to_sym
  when :days
    (to_date - from_date).to_i
  when :months
    (to_date.year * 12 + to_date.month) - (from_date.year * 12 + from_date.month)
  when :years
    to_date.year - from_date.year
  else
    raise ArgumentError, "Unknown date difference measure: #{@measure}"
  end
end