object_table 0.4.0 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 02f7e1642a2f1f8106f32e3b04f8cfebf8676d52
4
- data.tar.gz: 0986af221eab29e6654f511cebd5534962d82412
3
+ metadata.gz: acf152a47e8843f2a66b5fea50a40ec7ccb50041
4
+ data.tar.gz: df4ce84293c425fced73a2f26eeb6970375b199e
5
5
  SHA512:
6
- metadata.gz: d8ee1c4350da59156c2f17e23431969d126a5f8bac0a21348d048fb18486c765d1fe6f4f551a53ef18e03a9642e0704da93e997bb16c2d700003f5cde4f64079
7
- data.tar.gz: d15636d515d1d5439f5233e58738b5ffdb273a4df77000a4fbdc5ba6ff5018e16e382eb487c6aa0d27e6a9b390e1d6b551a3010ca843123a227c4ccbdee0278d
6
+ metadata.gz: d5a47eb7cf71b2d4408d84b8b46d39b2d12a029e126c80f339cbdfd4741c045d472cc3d4a6167340a5e916b79e35f0870fc6bee2f9ebc476161fd5b5e5edddfa
7
+ data.tar.gz: 317c8402da17a577095f500f29e029495809ec7a1c95571d6adbfc464b8d64125347ef56ec4cb898313a458077dc148dd677cba02fe91ad915b7f5a08d8b2a7e
@@ -23,18 +23,11 @@ class ObjectTable::MaskedColumn < NArray
23
23
  column
24
24
  end
25
25
 
26
- def []=(*keys, value)
27
- unless parent.nil? or ((value.is_a?(Array) or value.is_a?(NArray)) and value.empty?)
28
- parent[false, indices[*keys]] = value
29
- end
30
- super
31
- end
32
-
33
26
  # make destructive methods affect parent
34
- %w{ fill! indgen! indgen random! map! collect! conj! imag= mod! add! div! sbt! mul! }.each do |op|
27
+ %w{ []= fill! indgen! indgen random! map! collect! conj! imag= mod! add! div! sbt! mul! }.each do |op|
35
28
  define_method(op) do |*args, &block|
36
29
  result = super(*args, &block)
37
- parent[false, indices] = result if parent
30
+ parent[false, indices] = self if parent
38
31
  result
39
32
  end
40
33
  end
@@ -1,3 +1,3 @@
1
1
  class ObjectTable
2
- VERSION = "0.4.0"
2
+ VERSION = "0.4.1"
3
3
  end
@@ -8,15 +8,15 @@ shared_examples 'a NArray' do |operator, options={}|
8
8
  let(:x){ ObjectTable::MaskedColumn.mask(x_na, indices) }
9
9
  let(:y){ ObjectTable::MaskedColumn.mask(y_na, indices) }
10
10
 
11
- let(:x_na){ NArray.to_na((0..10).to_a) }
12
- let(:y_na){ NArray.to_na((5..15).to_a) }
11
+ let(:x_na){ (NArray.float(10, 20).random * 10).to_i + 1 }
12
+ let(:y_na){ (NArray.float(10, 20).random * 10).to_i + 1 }
13
13
 
14
14
  if unary
15
15
  subject{ x.send(operator) }
16
- let(:expected_result){ x_na[indices].send(operator) }
16
+ let(:expected_result){ x_na[false, indices].send(operator) }
17
17
  else
18
18
  subject{ x.send(operator, y) }
19
- let(:expected_result){ x_na.send(operator, y_na)[indices] }
19
+ let(:expected_result){ x_na.send(operator, y_na)[false, indices] }
20
20
  end
21
21
 
22
22
  describe "#{operator}" do
@@ -36,16 +36,16 @@ end
36
36
 
37
37
  describe ObjectTable::MaskedColumn do
38
38
 
39
- let(:parent) { NArray.float(10).random! }
39
+ let(:parent) { NArray.float(10, 10).random! }
40
40
  let(:indices) { NArray[1, 3, 4, 6] }
41
- let(:other_indices) { NArray.to_na((0...parent.length).to_a - indices.to_a) }
41
+ let(:other_indices) { NArray.to_na((0...parent.shape[-1]).to_a - indices.to_a) }
42
42
  let(:masked) { ObjectTable::MaskedColumn.mask(parent, indices) }
43
43
 
44
44
  subject{ masked }
45
45
 
46
46
  describe '.mask' do
47
47
  it 'should mask the parent' do
48
- expect(subject.to_a).to eql parent[indices].to_a
48
+ expect(subject.to_a).to eql parent[false, indices].to_a
49
49
  end
50
50
 
51
51
  it 'should set the parent' do
@@ -78,35 +78,49 @@ describe ObjectTable::MaskedColumn do
78
78
 
79
79
 
80
80
  shared_examples '#[]=' do |slice|
81
- let(:value) { 1000 }
82
- let!(:original){ parent.clone }
83
- let(:slice){ slice }
81
+ let(:value) { 1000 }
82
+ let!(:original) { parent.clone }
83
+ #let(:slice) { slice }
84
84
 
85
- context "slicing with a #{slice.class}" do
85
+ context "slicing with a #{slice[-1].class}" do
86
86
 
87
87
  it "should modify the parent" do
88
- subject[slice] = value
89
- expect(parent[indices].to_a).to eql subject.to_a
90
- expect(parent[other_indices].to_a).to eql original[other_indices].to_a
88
+ subject[*slice] = value
89
+ expect(parent[false, indices].to_a).to eql subject.to_a
90
+ expect(parent[false, other_indices].to_a).to eql original[false, other_indices].to_a
91
91
  end
92
92
 
93
93
  context 'without a parent' do
94
- subject{ ObjectTable::MaskedColumn[1, 2, 3, 4] }
94
+ subject{ ObjectTable::MaskedColumn.to_na(parent[false, indices]) }
95
95
 
96
96
  it 'should still work' do
97
- expect{subject[slice] = value}.to_not raise_error
97
+ expect{subject[*slice] = value}.to_not raise_error
98
98
  end
99
99
  end
100
100
 
101
101
  end
102
102
  end
103
103
 
104
- include_examples '#[]=', 0
105
- include_examples '#[]=', NArray.cast([1, 0, 0, 1], 'byte')
106
- include_examples '#[]=', 1...4
107
- include_examples '#[]=', [0, 2]
108
- include_examples '#[]=', true
109
- include_examples '#[]=', nil
104
+ context 'with a vector' do
105
+ let(:parent) { NArray.float(10).random }
106
+ include_examples '#[]=', [0]
107
+ include_examples '#[]=', [NArray.cast([1, 0, 0, 1], 'byte')]
108
+ include_examples '#[]=', [1...4]
109
+ include_examples '#[]=', [[0, 2]]
110
+ include_examples '#[]=', [true]
111
+ include_examples '#[]=', [nil]
112
+ end
113
+
114
+ context 'when multi dimensional' do
115
+ let(:parent) { NArray.float(10, 20).random }
116
+ include_examples '#[]=', [0]
117
+ include_examples '#[]=', [nil]
118
+ include_examples '#[]=', [true]
119
+ include_examples '#[]=', [0, 0]
120
+ include_examples '#[]=', [0, 1...4]
121
+ include_examples '#[]=', [0, [0, 2]]
122
+ include_examples '#[]=', [0, NArray.cast([1, 0, 0, 1], 'byte')]
123
+ end
110
124
 
111
125
 
112
126
  shared_examples 'destructive methods' do |method, *args|
@@ -122,12 +136,12 @@ describe ObjectTable::MaskedColumn do
122
136
 
123
137
  it "#{method} should affect the parent" do
124
138
  perform
125
- expect(parent[indices].to_a).to eql subject.to_a
126
- expect(parent[other_indices].to_a).to eql original[other_indices].to_a
139
+ expect(parent[false, indices].to_a).to eql subject.to_a
140
+ expect(parent[false, other_indices].to_a).to eql original[false, other_indices].to_a
127
141
  end
128
142
 
129
143
  context 'without a parent' do
130
- subject{ ObjectTable::MaskedColumn[1, 2, 3, 4] }
144
+ subject{ ObjectTable::MaskedColumn.to_na(parent[false, indices]) }
131
145
 
132
146
  it "#{method} should still work" do
133
147
  expect{perform}.to_not raise_error
metadata CHANGED
@@ -1,83 +1,83 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: object_table
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Cheney Lin
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-06-05 00:00:00.000000000 Z
11
+ date: 2015-06-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: narray
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: 0.6.1
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: 0.6.1
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: bundler
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ~>
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
33
  version: '1.3'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ~>
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '1.3'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rake
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - '>='
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - '>='
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rspec
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ~>
59
+ - - "~>"
60
60
  - !ruby/object:Gem::Version
61
61
  version: '3.1'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ~>
66
+ - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: '3.1'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: coveralls
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - '>='
73
+ - - ">="
74
74
  - !ruby/object:Gem::Version
75
75
  version: '0.7'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - '>='
80
+ - - ">="
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0.7'
83
83
  description: Simple data table table implementation in ruby
@@ -87,9 +87,9 @@ executables: []
87
87
  extensions: []
88
88
  extra_rdoc_files: []
89
89
  files:
90
- - .gitignore
91
- - .rspec
92
- - .travis.yml
90
+ - ".gitignore"
91
+ - ".rspec"
92
+ - ".travis.yml"
93
93
  - Gemfile
94
94
  - LICENSE
95
95
  - README.md
@@ -136,12 +136,12 @@ require_paths:
136
136
  - lib
137
137
  required_ruby_version: !ruby/object:Gem::Requirement
138
138
  requirements:
139
- - - '>='
139
+ - - ">="
140
140
  - !ruby/object:Gem::Version
141
141
  version: '2.0'
142
142
  required_rubygems_version: !ruby/object:Gem::Requirement
143
143
  requirements:
144
- - - '>='
144
+ - - ">="
145
145
  - !ruby/object:Gem::Version
146
146
  version: '0'
147
147
  requirements: []