Sha256: e84669eb7d52719e04cac0eb9578b6716785e19543f40718b7481a1d6328db66

Contents?: true

Size: 699 Bytes

Versions: 4

Compression:

Stored size: 699 Bytes

Contents

module Rserve

  module With2DSizes

    attr_reader :column_size, :row_size

    def sizes=(sizes)
      raise ArgumentError, "sizes must be of size 2" unless (sizes.size == 2)
      raise ArgumentError, "mismatch between provided size info and actual number of elements" unless self.size == (sizes[0] * sizes[1])
      @row_size = sizes[0]
      @column_size = sizes[1]

    end

    def at_2d(i,j)
      self[i + j * row_size]
    end

    def row(i)
      return nil unless (-row_size...row_size) === i
      each_slice(row_size).map {|col| col[i]}
    end

    def column(j)
      return nil unless (-column_size...column_size) === j
      self[(j * row_size), row_size]
    end



  end



end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
rserve-client-0.3.5 lib/rserve/with2dsizes.rb
rserve-client-0.3.3 lib/rserve/with2dsizes.rb
rserve-client-0.3.2 lib/rserve/with2dsizes.rb
rserve-client-0.3.1 lib/rserve/with2dsizes.rb