Sha256: e13cf72e72b8aaf65858a27e0404f0072f93cbeacdb73f7684f9d30235a6e6ea

Contents?: true

Size: 1.09 KB

Versions: 11

Compression:

Stored size: 1.09 KB

Contents

require_relative '../../deep_dup/deep_dup.rb'

class Data_table
    include Deep_dup

    # constructor
    def initialize(data)
        self.data = data
    end

    # row count
    def row_count
        self.data.size
    end

    # column count
    def col_count
        if self.data.empty?
            return 0
        end
        self.data[0].size
    end

    # get element
    def get(row, col)
        raise IndexError, "Row out of bounds" unless self.valid_row?(row)
        raise IndexError, "Column out of bounds" unless self.valid_col?(col)
        self.deep_dup(self.data[row][col])
    end

    private
    attr_reader :data

    # data setter
    def data=(data)
        unless data.is_a?(Array) && data.all? {|row| row.is_a?(Array)}
            raise ArgumentError, "Data must be a two-dimensional array"
        end

        @data = data.map{ |row| row.map { |element| deep_dup(element) }}
    end

    # row validation
    def valid_row?(row)
        row.between?(0, self.row_count - 1)
    end

    # column validation
    def valid_col?(col)
        col.between?(0, self.col_count - 1)
    end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
student_mvp-0.1.10 lib/models/data_table/data_table.rb
student_mvp-0.1.9 lib/models/data_table/data_table.rb
student_mvp-0.1.8 lib/models/data_table/data_table.rb
student_mvp-0.1.7 lib/models/data_table/data_table.rb
student_mvp-0.1.6 lib/models/data_table/data_table.rb
student_mvp-0.1.5 lib/models/data_table/data_table.rb
student_mvp-0.1.4 lib/models/data_table/data_table.rb
student_mvp-0.1.3 lib/models/data_table/data_table.rb
student_mvp-0.1.2 lib/models/data_table/data_table.rb
student_mvp-0.1.1 lib/models/data_table/data_table.rb
student_mvp-0.1.0 lib/models/data_table/data_table.rb