class ObjectTable::Grouping::Grid

Constants

K
R

Attributes

index[R]
values[R]

Public Class Methods

new(keys, defaults) click to toggle source
# File lib/object_table/grouping/grid.rb, line 8
def initialize(keys, defaults)
  unless defaults.is_a?(Hash)
    raise "Expected defaults to be a hash, got: #{defaults.inspect}"
  end
  defaults.default = 0
  @defaults = defaults

  @values = {}
  @index = {}
  @ids = keys.map{|k| @index[k] ||= @index.length}
  @keys = keys
  @length = @index.length
end

Public Instance Methods

[](k) click to toggle source
# File lib/object_table/grouping/grid.rb, line 22
def [](k)
  (@values[k] ||= Array.new(@length, @defaults[k]))[@id]
end
[]=(k, v) click to toggle source
# File lib/object_table/grouping/grid.rb, line 26
def []=(k, v)
  @values[k][@id] = v
end
apply_to_rows(rows, key_struct, block) click to toggle source
# File lib/object_table/grouping/grid.rb, line 36
def apply_to_rows(rows, key_struct, block)
  @ids.zip(@keys, rows) do |id, key, row|
    @id = id
    row.K = key_struct.new(*key)
    row.R = self
    ObjectTable::Util.apply_block(row, block)
  end
end