class RailwayOperation::Generic::FilledMatrix
Public Class Methods
new(*rows, row_type: Array)
click to toggle source
# File lib/railway_operation/generic/filled_matrix.rb, line 8 def initialize(*rows, row_type: Array) @row_type = row_type @matrix = EnsuredAccess.new(@row_type.new(rows)) do EnsuredAccess.new(@row_type.new) end ensure_rows_length_are_equal! end
Public Instance Methods
[](row_index, column_index = nil)
click to toggle source
# File lib/railway_operation/generic/filled_matrix.rb, line 17 def [](row_index, column_index = nil) if column_index @matrix.__getobj__[row_index] && @matrix.__getobj__[row_index][column_index] else @matrix.__getobj__[row_index] || EnsuredAccess.new(@row_type.new) end end
[]=(row_index, column_index, entry)
click to toggle source
# File lib/railway_operation/generic/filled_matrix.rb, line 26 def []=(row_index, column_index, entry) @max_column_index = nil # bust the max_column_index cache @matrix[row_index][column_index] = entry ensure_rows_length_are_equal! @matrix end
each() { |row| ... }
click to toggle source
# File lib/railway_operation/generic/filled_matrix.rb, line 35 def each @matrix.each do |row| yield row end end
max_column_index()
click to toggle source
# File lib/railway_operation/generic/filled_matrix.rb, line 41 def max_column_index @max_column_index ||= (@matrix.compact.max_by(&:length) || []).length - 1 end
Private Instance Methods
ensure_rows_length_are_equal!()
click to toggle source
# File lib/railway_operation/generic/filled_matrix.rb, line 47 def ensure_rows_length_are_equal! @matrix.each_with_index do |_column, index| @matrix[index][max_column_index] ||= nil end end