Class: ObjectTable::MaskedColumn

Inherits:
Column
  • Object
show all
Defined in:
lib/object_table/masked_column.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Column

#[], #_refer, #coerce_rev, #method_missing, #slice, #stack, #to_bool, #to_object, #uniq

Dynamic Method Handling

This class handles dynamic methods through the method_missing method in the class ObjectTable::Column

Instance Attribute Details

#indicesObject

Returns the value of attribute indices.



4
5
6
# File 'lib/object_table/masked_column.rb', line 4

def indices
  @indices
end

#padded_dimsObject

Returns the value of attribute padded_dims.



4
5
6
# File 'lib/object_table/masked_column.rb', line 4

def padded_dims
  @padded_dims
end

#parentObject

Returns the value of attribute parent.



4
5
6
# File 'lib/object_table/masked_column.rb', line 4

def parent
  @parent
end

Class Method Details

.make(*args) ⇒ Object

let ObjectTable::Column do this, since we’ve overriden []=



28
29
30
# File 'lib/object_table/masked_column.rb', line 28

def self.make(*args)
  ObjectTable::Column.make(*args)
end

.mask(parent, indices) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/object_table/masked_column.rb', line 6

def self.mask(parent, indices)
  if parent.rank > 1
    padded_dims = [nil] * (parent.rank - 1)
  else
    padded_dims = []
  end
  masked = parent.slice(*padded_dims, indices)

  if masked.rank <= 0
    column = self.new(masked.typecode, 0)
  else
    column = self.new(masked.typecode, *masked.shape)
    column.super_slice_assign(masked)
  end

  column.parent = parent
  column.indices = indices
  column.padded_dims = padded_dims
  column
end

Instance Method Details

#[]=(*keys, value) ⇒ Object



34
35
36
37
38
39
# File 'lib/object_table/masked_column.rb', line 34

def []=(*keys, value)
  unless parent.nil? or ((value.is_a?(Array) or value.is_a?(NArray)) and value.empty?)
    parent[*padded_dims, indices[*keys]] = value
  end
  super
end

#cloneObject



50
51
52
# File 'lib/object_table/masked_column.rb', line 50

def clone
  ObjectTable::Column.cast(self).clone
end

#super_slice_assignObject



32
# File 'lib/object_table/masked_column.rb', line 32

alias_method :super_slice_assign, :[]=