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