Module: MsPivot

Defined in:
lib/ms_pivot/row.rb,
lib/ms_pivot/table.rb,
lib/ms_pivot/measure.rb

Defined Under Namespace

Classes: Measure, Row, Table

Constant Summary collapse

APPEND =

Built-in measures

Measure.new do |current_value, new_value|
  current_value ||= []
  current_value << new_value
end
SUM =
Measure.new do |current_value, new_value|
  current_value ||= 0
  current_value + new_value
end
MIN =
Measure.new do |current_value, new_value|
  if current_value.nil?
    new_value 
  else
    new_value < current_value ? new_value : current_value
  end
end
MAX =
Measure.new do |current_value, new_value|
  if current_value.nil?
    new_value 
  else
    new_value > current_value ? new_value : current_value
  end
end
COUNT =
Measure.new do |current_value, new_value|
  current_value ||= 0
  current_value + 1
end
AVG =
Measure.new(Proc.new { |value| value[1] / value[0].to_f }) do |current_value, new_value|
  current_value ||= Struct.new(:count, :sum).new(0,0)
  current_value.count += 1
  current_value.sum   += new_value
  current_value
end