class Bmg::Summarizer::ValueBy

ValueBy summarizer.

Example:

# direct ruby usage
Bmg::Summarizer.value_by(:qty, :by => :serie).summarize(...)

Constants

DEFAULT_OPTIONS

Public Instance Methods

finalize(memo) click to toggle source

Finalizes the computation.

# File lib/bmg/summarizer/value_by.rb, line 33
def finalize(memo)
  default_tuple.merge(memo)
end
happens(memo, tuple) click to toggle source

Collects the value

# File lib/bmg/summarizer/value_by.rb, line 23
def happens(memo, tuple)
  by = tuple[options[:by]]
  by = by.to_sym if by && options[:symbolize]
  misuse!(tuple, memo) if memo.has_key?(by)
  memo.tap{|m|
    m[by] = extract_value(tuple)
  }
end
least() click to toggle source

Returns {} as least value.

# File lib/bmg/summarizer/value_by.rb, line 18
def least
  {}
end

Private Instance Methods

default_tuple() click to toggle source
# File lib/bmg/summarizer/value_by.rb, line 39
def default_tuple
  (options[:series] || []).each_with_object({}){|s,ss|
    s_def = options[:default]
    s = s.to_sym if s && options[:symbolize]
    ss[s] = s_def
  }
end
misuse!(tuple, memo) click to toggle source
# File lib/bmg/summarizer/value_by.rb, line 47
def misuse!(tuple, memo)
  msg = "Summarizer.value_by: summarization key + the serie must form be a candidate key"
  msg += "\n"
  msg += "  Tuple: #{tuple.inspect}"
  msg += "  Memo:  #{memo.inspect}"
  raise MisuseError, msg
end