Method: ObjectTable::Grouping#reduce

Defined in:
lib/object_table/grouping.rb

#reduce(defaults = {}, &block) ⇒ Object



73
74
75
76
77
78
79
80
81
82
83
# File 'lib/object_table/grouping.rb', line 73

def reduce(defaults={}, &block)
  keys = _keys()
  return empty_aggregation if keys.empty?

  grid = Grid.new(keys, defaults)
  rows = @parent.each_row(row_factory: Grid::RowFactory)
  grid.apply_to_rows(rows, self.class.key_struct(@names), block)

  keys = BasicGrid[@names.zip(grid.index.keys.transpose)]
  __table_cls__.new(keys.merge!(grid.values))
end