array_2d 0.1.1 → 0.2.0
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 +7 -0
- data/Gemfile +2 -1
- data/Gemfile.lock +45 -7
- data/VERSION +1 -1
- data/array_2d.gemspec +9 -8
- data/lib/array_2d.rb +36 -15
- data/test/helper.rb +1 -1
- data/test/test_array_2d.rb +50 -8
- metadata +31 -27
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 318cf98676f86f1868df4c05d0abdbf3564d1228
|
4
|
+
data.tar.gz: 95acf1e096a5c75e6c0153d00d5fef4f031ed901
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 0882c7dd437e6ef4e37c7a1740450ff308d987a777c58444c8966b13a927bf1f9e38b0ef15261855d747715383c39cc2f3eeadf397e73f101f3c11867e24eeb1
|
7
|
+
data.tar.gz: e01c3f5e3d18f7a2a7e58a172b66231b1353ce4c930593f6dcef712e64d2fd17946dca779ab7e5d66728e81cdd1f7233cb1b6faf47f8352437b8da5de82b9294
|
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,21 +1,59 @@
|
|
1
1
|
GEM
|
2
2
|
remote: http://rubygems.org/
|
3
3
|
specs:
|
4
|
-
|
5
|
-
|
6
|
-
|
4
|
+
addressable (2.4.0)
|
5
|
+
builder (3.2.2)
|
6
|
+
descendants_tracker (0.0.4)
|
7
|
+
thread_safe (~> 0.3, >= 0.3.1)
|
8
|
+
faraday (0.9.2)
|
9
|
+
multipart-post (>= 1.2, < 3)
|
10
|
+
git (1.2.9.1)
|
11
|
+
github_api (0.13.1)
|
12
|
+
addressable (~> 2.4.0)
|
13
|
+
descendants_tracker (~> 0.0.4)
|
14
|
+
faraday (~> 0.8, < 0.10)
|
15
|
+
hashie (>= 3.4)
|
16
|
+
multi_json (>= 1.7.5, < 2.0)
|
17
|
+
oauth2
|
18
|
+
hashie (3.4.3)
|
19
|
+
highline (1.7.8)
|
20
|
+
jeweler (2.0.1)
|
21
|
+
builder
|
22
|
+
bundler (>= 1.0)
|
7
23
|
git (>= 1.2.5)
|
24
|
+
github_api
|
25
|
+
highline (>= 1.6.15)
|
26
|
+
nokogiri (>= 1.5.10)
|
8
27
|
rake
|
9
28
|
rdoc
|
10
|
-
json (1.
|
11
|
-
|
12
|
-
|
29
|
+
json (1.8.3)
|
30
|
+
jwt (1.5.2)
|
31
|
+
mini_portile2 (2.0.0)
|
32
|
+
minitest (5.8.3)
|
33
|
+
multi_json (1.11.2)
|
34
|
+
multi_xml (0.5.5)
|
35
|
+
multipart-post (2.0.0)
|
36
|
+
nokogiri (1.6.7.1)
|
37
|
+
mini_portile2 (~> 2.0.0.rc2)
|
38
|
+
oauth2 (1.0.0)
|
39
|
+
faraday (>= 0.8, < 0.10)
|
40
|
+
jwt (~> 1.0)
|
41
|
+
multi_json (~> 1.3)
|
42
|
+
multi_xml (~> 0.5)
|
43
|
+
rack (~> 1.2)
|
44
|
+
rack (1.6.4)
|
45
|
+
rake (10.5.0)
|
46
|
+
rdoc (4.2.1)
|
13
47
|
json (~> 1.4)
|
48
|
+
thread_safe (0.3.5)
|
14
49
|
|
15
50
|
PLATFORMS
|
16
51
|
ruby
|
17
52
|
|
18
53
|
DEPENDENCIES
|
19
|
-
bundler
|
20
54
|
jeweler
|
55
|
+
minitest
|
21
56
|
rdoc
|
57
|
+
|
58
|
+
BUNDLED WITH
|
59
|
+
1.11.2
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.2.0
|
data/array_2d.gemspec
CHANGED
@@ -2,14 +2,16 @@
|
|
2
2
|
# DO NOT EDIT THIS FILE DIRECTLY
|
3
3
|
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
|
+
# stub: array_2d 0.2.0 ruby lib
|
5
6
|
|
6
7
|
Gem::Specification.new do |s|
|
7
8
|
s.name = "array_2d"
|
8
|
-
s.version = "0.
|
9
|
+
s.version = "0.2.0"
|
9
10
|
|
10
11
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
12
|
+
s.require_paths = ["lib"]
|
11
13
|
s.authors = ["Luke Grecki"]
|
12
|
-
s.date = "
|
14
|
+
s.date = "2016-01-15"
|
13
15
|
s.description = "Create mutable 2D arrays that allow you to change subarrays."
|
14
16
|
s.email = "lukegrecki@gmail.com"
|
15
17
|
s.extra_rdoc_files = [
|
@@ -31,26 +33,25 @@ Gem::Specification.new do |s|
|
|
31
33
|
]
|
32
34
|
s.homepage = "http://github.com/lukegrecki/array_2d"
|
33
35
|
s.licenses = ["MIT"]
|
34
|
-
s.
|
35
|
-
s.rubygems_version = "1.8.10"
|
36
|
+
s.rubygems_version = "2.4.5"
|
36
37
|
s.summary = "A lightweight mutable 2D array class"
|
37
38
|
|
38
39
|
if s.respond_to? :specification_version then
|
39
|
-
s.specification_version =
|
40
|
+
s.specification_version = 4
|
40
41
|
|
41
42
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
42
43
|
s.add_development_dependency(%q<rdoc>, [">= 0"])
|
43
|
-
s.add_development_dependency(%q<bundler>, [">= 0"])
|
44
44
|
s.add_development_dependency(%q<jeweler>, [">= 0"])
|
45
|
+
s.add_development_dependency(%q<minitest>, [">= 0"])
|
45
46
|
else
|
46
47
|
s.add_dependency(%q<rdoc>, [">= 0"])
|
47
|
-
s.add_dependency(%q<bundler>, [">= 0"])
|
48
48
|
s.add_dependency(%q<jeweler>, [">= 0"])
|
49
|
+
s.add_dependency(%q<minitest>, [">= 0"])
|
49
50
|
end
|
50
51
|
else
|
51
52
|
s.add_dependency(%q<rdoc>, [">= 0"])
|
52
|
-
s.add_dependency(%q<bundler>, [">= 0"])
|
53
53
|
s.add_dependency(%q<jeweler>, [">= 0"])
|
54
|
+
s.add_dependency(%q<minitest>, [">= 0"])
|
54
55
|
end
|
55
56
|
end
|
56
57
|
|
data/lib/array_2d.rb
CHANGED
@@ -49,24 +49,36 @@ class Array2D
|
|
49
49
|
when Integer
|
50
50
|
@state[x][y]
|
51
51
|
when Range
|
52
|
-
|
53
|
-
|
54
|
-
|
52
|
+
if y.size <= column_size
|
53
|
+
subarray = Array.new(y.to_a.size)
|
54
|
+
y.each {|yi| subarray[yi - y.first] = @state[x][yi]}
|
55
|
+
subarray
|
56
|
+
else
|
57
|
+
raise IndexError, "Indices are out of range"
|
58
|
+
end
|
55
59
|
end
|
56
60
|
when Range
|
57
61
|
case y
|
58
62
|
when Integer
|
59
|
-
|
60
|
-
|
61
|
-
|
63
|
+
if x.size <= row_size
|
64
|
+
subarray = Array.new(x.to_a.size)
|
65
|
+
x.each {|xi| subarray[xi - x.first] = @state[xi][y]}
|
66
|
+
subarray
|
67
|
+
else
|
68
|
+
raise IndexError, "Indices are out of range"
|
69
|
+
end
|
62
70
|
when Range
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
71
|
+
if x.size <= row_size && y.size <= column_size
|
72
|
+
subarray = Array2D.new(x.to_a.size, y.to_a.size)
|
73
|
+
x.each do |xi|
|
74
|
+
y.each do |yi|
|
75
|
+
subarray.state[xi - x.first][yi - y.first] = @state[xi][yi]
|
76
|
+
end
|
67
77
|
end
|
78
|
+
subarray
|
79
|
+
else
|
80
|
+
raise IndexError, "Indices are out of range"
|
68
81
|
end
|
69
|
-
subarray
|
70
82
|
end
|
71
83
|
end
|
72
84
|
end
|
@@ -78,8 +90,10 @@ class Array2D
|
|
78
90
|
when Integer
|
79
91
|
@state[x][y] = value
|
80
92
|
when Range
|
81
|
-
if value.is_a?(Array) && y.
|
93
|
+
if value.is_a?(Array) && y.size == value.size
|
82
94
|
y.each {|yi| @state[x][yi] = value[yi - y.first]}
|
95
|
+
elsif value.is_a?(Array) && y.size != value.size
|
96
|
+
raise AssignmentError, "Value array is not the same size as subarray"
|
83
97
|
else
|
84
98
|
y.each {|yi| @state[x][yi] = value}
|
85
99
|
end
|
@@ -87,16 +101,20 @@ class Array2D
|
|
87
101
|
when Range
|
88
102
|
case y
|
89
103
|
when Integer
|
90
|
-
if value.is_a?(Array) && x.
|
104
|
+
if value.is_a?(Array) && x.size == value.size
|
91
105
|
x.each {|xi| @state[xi][y] = value[xi - x.first]}
|
106
|
+
elsif value.is_a?(Array) && x.size != value.size
|
107
|
+
raise AssignmentError, "Value array is not the same size as subarray"
|
92
108
|
else
|
93
109
|
x.each {|xi| @state[xi][y] = value}
|
94
110
|
end
|
95
111
|
when Range
|
96
112
|
x.each do |xi|
|
97
113
|
y.each do |yi|
|
98
|
-
if value.is_a?(Array2D) && [x.
|
114
|
+
if value.is_a?(Array2D) && [x.size, y.size] == value.size
|
99
115
|
@state[xi][yi] = value[xi - x.first, yi - y.first]
|
116
|
+
elsif value.is_a?(Array2D) && [x.size, y.size] != value.size
|
117
|
+
raise AssignmentError, "Value 2d array is not the same size as subarray"
|
100
118
|
else
|
101
119
|
@state[xi][yi] = value
|
102
120
|
end
|
@@ -106,4 +124,7 @@ class Array2D
|
|
106
124
|
end
|
107
125
|
end
|
108
126
|
|
109
|
-
end
|
127
|
+
end
|
128
|
+
|
129
|
+
class IndexError < StandardError; end
|
130
|
+
class AssignmentError < StandardError; end
|
data/test/helper.rb
CHANGED
@@ -6,7 +6,7 @@ rescue Bundler::BundlerError => e
|
|
6
6
|
$stderr.puts "Run `bundle install` to install missing gems"
|
7
7
|
exit e.status_code
|
8
8
|
end
|
9
|
-
require '
|
9
|
+
require 'minitest/autorun'
|
10
10
|
|
11
11
|
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
12
12
|
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
data/test/test_array_2d.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'helper'
|
2
2
|
|
3
|
-
class Array2DTest < Test
|
3
|
+
class Array2DTest < Minitest::Test
|
4
4
|
def setup
|
5
5
|
@array2d = Array2D.new(3, 5, 0)
|
6
6
|
end
|
@@ -10,21 +10,35 @@ class Array2DTest < Test::Unit::TestCase
|
|
10
10
|
assert_instance_of Array2D, Array2D.new(3, 5, 0)
|
11
11
|
end
|
12
12
|
|
13
|
+
def test_initial_value
|
14
|
+
assert_equal 0, @array2d[2, 2]
|
15
|
+
end
|
16
|
+
|
13
17
|
def test_each
|
14
|
-
|
18
|
+
array2d = Array2D.new(2, 2)
|
19
|
+
array2d.state = [[1, 2], [3, 4]]
|
20
|
+
each_array = []
|
21
|
+
array2d.each { |e| each_array << e }
|
22
|
+
assert_equal [1, 2, 3, 4], each_array
|
15
23
|
end
|
16
24
|
|
17
25
|
def test_each_with_index
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
26
|
+
array2d = Array2D.new(2, 2)
|
27
|
+
array2d.state = [[1, 2], [3, 4]]
|
28
|
+
each_array = []
|
29
|
+
index_array = []
|
30
|
+
array2d.each_with_index do |e, index|
|
31
|
+
each_array << e
|
32
|
+
index_array << index
|
22
33
|
end
|
34
|
+
assert_equal [1, 2, 3, 4], each_array
|
35
|
+
assert_equal [[0, 0], [0, 1], [1, 0], [1, 1]], index_array
|
23
36
|
end
|
24
37
|
|
25
38
|
def test_to_s
|
26
|
-
array2d = Array2D.new(2, 2
|
27
|
-
|
39
|
+
array2d = Array2D.new(2, 2)
|
40
|
+
array2d.state = [[1, 2], [3, 4]]
|
41
|
+
assert_equal '[[1, 2], [3, 4]]', array2d.to_s
|
28
42
|
end
|
29
43
|
|
30
44
|
def test_equality
|
@@ -76,4 +90,32 @@ class Array2DTest < Test::Unit::TestCase
|
|
76
90
|
@array2d[0, 0...5] = 7
|
77
91
|
assert_equal [7, 7, 7, 7, 7], @array2d[0, 0...5]
|
78
92
|
end
|
93
|
+
|
94
|
+
def test_get_bracket_errors
|
95
|
+
assert_raises(IndexError) do
|
96
|
+
@array2d[0..(@array2d.row_size + 1), 0]
|
97
|
+
end
|
98
|
+
|
99
|
+
assert_raises(IndexError) do
|
100
|
+
@array2d[0, 0..(@array2d.column_size + 1)]
|
101
|
+
end
|
102
|
+
|
103
|
+
assert_raises(IndexError) do
|
104
|
+
@array2d[0..(@array2d.row_size + 1), 0..(@array2d.column_size + 1)]
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
108
|
+
def test_set_bracket_errors
|
109
|
+
assert_raises(AssignmentError) do
|
110
|
+
@array2d[0..(@array2d.row_size), 0] = Array.new(@array2d.row_size, 0)
|
111
|
+
end
|
112
|
+
|
113
|
+
assert_raises(AssignmentError) do
|
114
|
+
@array2d[0, 0..(@array2d.column_size)] = Array.new(@array2d.column_size + 2, 0)
|
115
|
+
end
|
116
|
+
|
117
|
+
assert_raises(AssignmentError) do
|
118
|
+
@array2d[0..(@array2d.row_size), 0..(@array2d.column_size)] = Array2D.new(@array2d.row_size + 2, @array2d.column_size + 2)
|
119
|
+
end
|
120
|
+
end
|
79
121
|
end
|
metadata
CHANGED
@@ -1,49 +1,57 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: array_2d
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.2.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Luke Grecki
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2016-01-15 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: rdoc
|
16
|
-
requirement:
|
17
|
-
none: false
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - ">="
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: '0'
|
22
20
|
type: :development
|
23
21
|
prerelease: false
|
24
|
-
version_requirements:
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
25
27
|
- !ruby/object:Gem::Dependency
|
26
|
-
name:
|
27
|
-
requirement:
|
28
|
-
none: false
|
28
|
+
name: jeweler
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
29
30
|
requirements:
|
30
|
-
- -
|
31
|
+
- - ">="
|
31
32
|
- !ruby/object:Gem::Version
|
32
33
|
version: '0'
|
33
34
|
type: :development
|
34
35
|
prerelease: false
|
35
|
-
version_requirements:
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
36
41
|
- !ruby/object:Gem::Dependency
|
37
|
-
name:
|
38
|
-
requirement:
|
39
|
-
none: false
|
42
|
+
name: minitest
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
40
44
|
requirements:
|
41
|
-
- -
|
45
|
+
- - ">="
|
42
46
|
- !ruby/object:Gem::Version
|
43
47
|
version: '0'
|
44
48
|
type: :development
|
45
49
|
prerelease: false
|
46
|
-
version_requirements:
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
47
55
|
description: Create mutable 2D arrays that allow you to change subarrays.
|
48
56
|
email: lukegrecki@gmail.com
|
49
57
|
executables: []
|
@@ -52,7 +60,7 @@ extra_rdoc_files:
|
|
52
60
|
- LICENSE.txt
|
53
61
|
- README.rdoc
|
54
62
|
files:
|
55
|
-
- .document
|
63
|
+
- ".document"
|
56
64
|
- Gemfile
|
57
65
|
- Gemfile.lock
|
58
66
|
- LICENSE.txt
|
@@ -66,29 +74,25 @@ files:
|
|
66
74
|
homepage: http://github.com/lukegrecki/array_2d
|
67
75
|
licenses:
|
68
76
|
- MIT
|
77
|
+
metadata: {}
|
69
78
|
post_install_message:
|
70
79
|
rdoc_options: []
|
71
80
|
require_paths:
|
72
81
|
- lib
|
73
82
|
required_ruby_version: !ruby/object:Gem::Requirement
|
74
|
-
none: false
|
75
83
|
requirements:
|
76
|
-
- -
|
84
|
+
- - ">="
|
77
85
|
- !ruby/object:Gem::Version
|
78
86
|
version: '0'
|
79
|
-
segments:
|
80
|
-
- 0
|
81
|
-
hash: 348675471
|
82
87
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
83
|
-
none: false
|
84
88
|
requirements:
|
85
|
-
- -
|
89
|
+
- - ">="
|
86
90
|
- !ruby/object:Gem::Version
|
87
91
|
version: '0'
|
88
92
|
requirements: []
|
89
93
|
rubyforge_project:
|
90
|
-
rubygems_version:
|
94
|
+
rubygems_version: 2.4.5
|
91
95
|
signing_key:
|
92
|
-
specification_version:
|
96
|
+
specification_version: 4
|
93
97
|
summary: A lightweight mutable 2D array class
|
94
98
|
test_files: []
|