Class: Differential::Calculator::Report

Inherits:
Object
  • Object
show all
Includes:
HasTotals
Defined in:
lib/differential/calculator/report.rb

Overview

This class is responsible for building an entire report. Usage:

  • Instantiate a Reader.

  • Instantiate a Report.

  • Feed in dataset(s) into the Reader to generate Record objects.

  • Feed in Record objects, generated by a Reader, by calling Report#add.

The Report object will keep running sums and deltas of all added records.

Instance Method Summary collapse

Methods included from HasTotals

#totals

Instance Method Details

#add(record, side) ⇒ Object

Raises:

  • (ArgumentError)


29
30
31
32
33
34
35
36
37
38
# File 'lib/differential/calculator/report.rb', line 29

def add(record, side)
  raise ArgumentError, 'record is required' unless record
  raise ArgumentError, 'side is required'   unless side

  totals.add(record.value, side)

  upsert_group(record, side)

  self
end

#groupsObject



25
26
27
# File 'lib/differential/calculator/report.rb', line 25

def groups
  groups_by_id.values
end

#sorted_groupsObject



21
22
23
# File 'lib/differential/calculator/report.rb', line 21

def sorted_groups
  groups.sort_by { |group| group.id.value }
end