Class: ObjectTable::BasicGrid
- Inherits:
-
Hash
- Object
- Hash
- ObjectTable::BasicGrid
- Defined in:
- lib/object_table/basic_grid.rb
Constant Summary collapse
- ARRAY_LIKE =
[Array, Range]
Instance Method Summary collapse
-
#_ensure_uniform_columns!(rows = nil) ⇒ Object
def self.[](*args) grid = super grid._ensure_uniform_columns! end.
Instance Method Details
#_ensure_uniform_columns!(rows = nil) ⇒ Object
def self.[](*args)
grid = super
grid._ensure_uniform_columns!
end
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/object_table/basic_grid.rb', line 11 def _ensure_uniform_columns!(rows = nil) arrays, scalars = partition{|k, v| ARRAY_LIKE.any?{|cls| v.is_a?(cls)} } narrays, scalars = scalars.partition{|k, v| v.is_a?(NArray) } unique_rows = arrays.map{|k, v| v.count} unique_rows += narrays.map{|k, v| v.shape.last or 0} unique_rows = unique_rows.uniq if rows raise "Differing number of rows: #{unique_rows}" unless unique_rows.empty? or unique_rows == [rows] else raise "Differing number of rows: #{unique_rows}" if unique_rows.length > 1 rows = (unique_rows[0] or 1) end scalars.each do |k, v| self[k] = [v] * rows end self end |