class Dossier::Segment::Summary

Constants

HeaderError

Attributes

average[R]
count[R]
headers[R]
sum[R]
sums[R]

Public Class Methods

new(headers) click to toggle source
# File lib/dossier/segment/summary.rb, line 7
def initialize(headers)
  @headers = headers.map(&:to_s)
  @count   = 0
  @sums    = headers.map { 0 }
end

Public Instance Methods

<<(row) click to toggle source
# File lib/dossier/segment/summary.rb, line 13
def <<(row)
  @count += 1
  row.each_with_index { |v, i| sums[i] += parse(v) }
  self
end

Private Instance Methods

index_of(key) click to toggle source
# File lib/dossier/segment/summary.rb, line 31
def index_of(key)
  indexes[key.to_s] ||= headers.index(key.to_s) or raise_missing_header(key)
end
indexes() click to toggle source
# File lib/dossier/segment/summary.rb, line 35
def indexes
  @indexes ||= {}
end
parse(value) click to toggle source
# File lib/dossier/segment/summary.rb, line 39
def parse(value)
  BigDecimal.new(value.to_s)
end
raise_missing_header(key) click to toggle source
# File lib/dossier/segment/summary.rb, line 43
def raise_missing_header(key)
  raise HeaderError.new %Q[No such header '#{key}' in headers: #{headers.join(', ')}]
end