Sha256: ad5ebf833c3ca80c3e5ca75250af0cfccf2910aff37d2bc2f69a63f3c34d31e0

Contents?: true

Size: 638 Bytes

Versions: 2

Compression:

Stored size: 638 Bytes

Contents

require 'narray'

class ObjectTable::BasicGrid < Hash
#   def self.[](*args)
#     grid = super
#     grid._ensure_uniform_columns!
#   end

  def _get_number_rows!
    each{|k, v| self[k] = v.to_a if v.is_a?(Range)}
    rows = map{|k, v| ObjectTable::Column.length_of(v)}.compact.uniq
  end

  def _ensure_uniform_columns!(rows = nil)
    unique_rows = _get_number_rows!
    unique_rows |= [rows] if rows

    raise "Differing number of rows: #{unique_rows}" if unique_rows.length > 1
    rows = (unique_rows[0] or 1)

    each do |k, v|
      self[k] = [v] * rows unless (v.is_a?(Array) || v.is_a?(NArray))
    end

    rows
  end

end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
object_table-0.4.1 lib/object_table/basic_grid.rb
object_table-0.4.0 lib/object_table/basic_grid.rb