cellular_map 0.2.1 → 0.3.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.
- data/Rakefile +4 -4
- data/lib/cellular_map/map.rb +6 -1
- data/lib/cellular_map/zone.rb +10 -3
- data/test/test_map.rb +6 -0
- data/test/test_zone.rb +6 -0
- metadata +3 -3
data/Rakefile
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
require 'rake'
|
2
|
-
|
2
|
+
|
3
3
|
begin
|
4
4
|
require 'jeweler'
|
5
5
|
include_file_globs = ["README*",
|
@@ -24,13 +24,13 @@ begin
|
|
24
24
|
gem.has_rdoc = true
|
25
25
|
gem.extra_rdoc_files = ["README*"]
|
26
26
|
gem.rdoc_options << '--line-numbers' << '--inline-source'
|
27
|
-
gem.add_development_dependency("
|
27
|
+
gem.add_development_dependency("shoulda", ">= 0")
|
28
28
|
end
|
29
29
|
Jeweler::GemcutterTasks.new
|
30
30
|
rescue LoadError
|
31
31
|
puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
|
32
32
|
end
|
33
|
-
|
33
|
+
|
34
34
|
require 'rake/testtask'
|
35
35
|
desc 'Test the cellular map gem.'
|
36
36
|
Rake::TestTask.new(:test) do |t|
|
@@ -56,7 +56,7 @@ end
|
|
56
56
|
task :test => :check_dependencies
|
57
57
|
|
58
58
|
task :default => :test
|
59
|
-
|
59
|
+
|
60
60
|
require 'rake/rdoctask'
|
61
61
|
desc 'Generate documentation for the cellular map gem.'
|
62
62
|
Rake::RDocTask.new(:rdoc) do |rdoc|
|
data/lib/cellular_map/map.rb
CHANGED
@@ -3,7 +3,7 @@ require 'cellular_map/zone'
|
|
3
3
|
|
4
4
|
module CellularMap
|
5
5
|
# =Map
|
6
|
-
#
|
6
|
+
#
|
7
7
|
# Maps are limitless, only non-empty (nil content) cells are actually stored.
|
8
8
|
#
|
9
9
|
# (see README for examples)
|
@@ -40,6 +40,11 @@ module CellularMap
|
|
40
40
|
self
|
41
41
|
end
|
42
42
|
|
43
|
+
# Collecting all filled cells
|
44
|
+
def collect # :yields: cell
|
45
|
+
@store.keys.collect { |k| yield Cell.new(*(k + [self])) }
|
46
|
+
end
|
47
|
+
|
43
48
|
# Converts to map to an array of filled cells
|
44
49
|
def to_a
|
45
50
|
@store.keys.collect { |k| Cell.new(*(k + [self])) }
|
data/lib/cellular_map/zone.rb
CHANGED
@@ -6,7 +6,7 @@ module CellularMap
|
|
6
6
|
#
|
7
7
|
# (see README for examples)
|
8
8
|
class Zone
|
9
|
-
|
9
|
+
|
10
10
|
# Zone's boundaries
|
11
11
|
attr_reader :x, :y
|
12
12
|
# Map the zone's part of
|
@@ -16,7 +16,7 @@ module CellularMap
|
|
16
16
|
@x, @y = rangeize(x, y)
|
17
17
|
@map = map
|
18
18
|
end
|
19
|
-
|
19
|
+
|
20
20
|
# Zone's length.
|
21
21
|
def length
|
22
22
|
width * height
|
@@ -53,9 +53,16 @@ module CellularMap
|
|
53
53
|
@y.each { |y| @x.each { |x| yield Cell.new(x, y, @map) } }
|
54
54
|
end
|
55
55
|
|
56
|
+
# Collecting cells inside the zone.
|
57
|
+
#
|
58
|
+
# see each
|
59
|
+
def collect # :yields: cell
|
60
|
+
@y.inject([]) { |r, y| r + @x.collect { |x| yield Cell.new(x, y, @map) } }
|
61
|
+
end
|
62
|
+
|
56
63
|
# Making an array of arrays of all cells inside the zone.
|
57
64
|
#
|
58
|
-
#
|
65
|
+
# see each
|
59
66
|
def to_a
|
60
67
|
@y.collect { |y| @x.collect { |x| Cell.new(x, y, @map) } }
|
61
68
|
end
|
data/test/test_map.rb
CHANGED
@@ -43,6 +43,12 @@ class TestMap < Test::Unit::TestCase
|
|
43
43
|
assert_equal @map, result
|
44
44
|
}
|
45
45
|
|
46
|
+
should("collect all filled cells") {
|
47
|
+
expected = @sample.collect { |c, v| c + [v] }.sort!
|
48
|
+
inside = @map.collect { |cell| [cell.x, cell.y, cell.content] }.sort!
|
49
|
+
assert_equal expected, inside
|
50
|
+
}
|
51
|
+
|
46
52
|
should("be convertible to an array of cells") {
|
47
53
|
res = @map.to_a
|
48
54
|
assert res.is_a? Array
|
data/test/test_zone.rb
CHANGED
@@ -59,6 +59,12 @@ class TestZone < Test::Unit::TestCase
|
|
59
59
|
assert_equal @positions, inside
|
60
60
|
}
|
61
61
|
|
62
|
+
should("collect all its cells in a basic one-dimension array") {
|
63
|
+
inside = @zone.collect { |cell| [cell.x, cell.y, cell.content] }.sort!
|
64
|
+
outside = @positions.collect { |x, y| [x, y, @sample[[x, y]]] }.sort!
|
65
|
+
assert_equal outside, inside
|
66
|
+
}
|
67
|
+
|
62
68
|
should("be convertible to an array of all its cells") {
|
63
69
|
res = @zone.to_a
|
64
70
|
assert res.is_a? Array
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cellular_map
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michel Belleville
|
@@ -9,11 +9,11 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2010-01-
|
12
|
+
date: 2010-01-29 00:00:00 +01:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
|
-
name:
|
16
|
+
name: shoulda
|
17
17
|
type: :development
|
18
18
|
version_requirement:
|
19
19
|
version_requirements: !ruby/object:Gem::Requirement
|