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