object_table 0.4.0 → 0.4.1

Sign up to get free protection for your applications and to get access to all the features.
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: []