about_pos 0.1.0 → 1.0.0

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: d68d749d2f08127f80633e1e9f9ee604ac87b087
4
- data.tar.gz: 63038ab28ff4774823a34d6e184a9d8fc98f14f9
3
+ metadata.gz: 5a13fbc4f4d32305a5c2a484631122595c3885ec
4
+ data.tar.gz: f76609319cbc3f3016c60a5aad03ce3c63f1d894
5
5
  SHA512:
6
- metadata.gz: d09008e484f098deb5b3f4f790d82f16fef25fa886cdd4f3a12f1071a2021cfe933e84a2781c9fc0f97683e75737f01a2c9bd8fdd75f4229cbc4ebf489b030e2
7
- data.tar.gz: f2e5401988650543456e323a64d093b7c13eeeb57c97b3829958b63d54b3872241f6f1a70e55c9fb1f93245666e656b037993dccb42b13e982d4066354a12d33
6
+ metadata.gz: 5bbab446317f930dde77d793ab3e10d42145b59f735ff0147e289d76005fa8239c63ac6d8043ebfb33c70cbdf0423eca955d8e4558bf3e622367d723385728b4
7
+ data.tar.gz: c3223262b8529197c8e872ae8e232d1eb2f9bfe9e7e47d24daa281710812a5c4872e58cead9fa466c7e2e55d7eb55e861c01015875d89d048bef8cd318263e4f
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.0
1
+ 1.0.0
data/about_pos.gemspec CHANGED
@@ -23,8 +23,7 @@ Gem::Specification.new do |spec|
23
23
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
24
24
  spec.require_paths = ["lib"]
25
25
 
26
- spec.add_development_dependency "bundler", "~> 1.5"
27
- spec.add_development_dependency "rake"
26
+ spec.add_development_dependency "bundler", "> 1.5"
28
27
  spec.add_development_dependency "bacon"
29
28
  spec.add_development_dependency "Bacon_Colored"
30
29
  spec.add_development_dependency "pry"
data/lib/about_pos.rb CHANGED
@@ -26,11 +26,15 @@ class About_Pos
26
26
  seq = arr.reverse
27
27
  end
28
28
 
29
- meta = Meta.new(dir, real_index, 0, arr)
29
+ meta = Meta.new(dir, real_index, arr)
30
30
 
31
31
  seq.each_with_index { |v, i|
32
32
  yield meta.value, meta.real_index, meta
33
- (meta = meta.next) if meta.next?
33
+ if meta.next?
34
+ meta = meta.next
35
+ else
36
+ break
37
+ end
34
38
  }
35
39
  end
36
40
 
@@ -38,25 +42,26 @@ class About_Pos
38
42
 
39
43
  class Meta
40
44
 
41
- def initialize dir, real_index, i, arr, prev = nil
45
+ def initialize dir, real_index, arr, prev = nil
42
46
  @arr = arr
43
47
  @data = {}
44
48
  @dir = dir
45
49
  @last_index = arr.size - 1
46
50
 
47
51
  @real_index = real_index
48
- @value = arr[real_index]
49
- @i = i
50
52
 
51
53
  @next = nil
52
54
  @prev = prev
53
55
  end
54
56
 
57
+ def value
58
+ arr[real_index]
59
+ end
60
+
55
61
  [
56
62
  :arr,
57
63
  :real_index,
58
- :last_index,
59
- :value, :i
64
+ :last_index
60
65
  ].each { |v|
61
66
  eval %~
62
67
  def #{v}
@@ -66,6 +71,16 @@ class About_Pos
66
71
  ~
67
72
  }
68
73
 
74
+ def grab
75
+ raise No_Next, "No more values to grab" unless next?
76
+ if forward?
77
+ @real_index += 1
78
+ else
79
+ @real_index -= 1
80
+ end
81
+ value
82
+ end
83
+
69
84
  def next
70
85
  @msg ||= if forward?
71
86
  "This is the last position."
@@ -76,9 +91,9 @@ class About_Pos
76
91
 
77
92
  @next ||= begin
78
93
  if forward?
79
- Meta.new(dir, real_index + 1, self.i + 1, arr, self)
94
+ Meta.new(dir, real_index + 1, arr, self)
80
95
  else
81
- Meta.new(dir, real_index - 1, self.i - 1, arr, self)
96
+ Meta.new(dir, real_index - 1, arr, self)
82
97
  end
83
98
  end
84
99
  end
@@ -93,9 +108,9 @@ class About_Pos
93
108
 
94
109
  @prev ||= begin
95
110
  if forward?
96
- Meta.new(dir, real_index - 1, self.i - 1, arr)
111
+ Meta.new(dir, real_index - 1, arr)
97
112
  else
98
- Meta.new(dir, real_index + 1, self.i + 1, arr)
113
+ Meta.new(dir, real_index + 1, arr)
99
114
  end
100
115
  end
101
116
  end
@@ -114,17 +129,17 @@ class About_Pos
114
129
 
115
130
  def next?
116
131
  if forward?
117
- real_index != last_index
132
+ real_index < last_index
118
133
  else
119
- real_index != 0
134
+ real_index > 0
120
135
  end
121
136
  end
122
137
 
123
138
  def prev?
124
139
  if forward?
125
- real_index != 0
140
+ real_index > 0
126
141
  else
127
- real_index != last_index
142
+ real_index < last_index
128
143
  end
129
144
  end
130
145
 
data/specs/Back.rb CHANGED
@@ -91,6 +91,56 @@ describe "Back" do
91
91
 
92
92
  end # === describe next ===
93
93
 
94
+ describe :grab do
95
+
96
+ it "grabs the :next value" do
97
+ tracks = []
98
+ About_Pos.Back([1,2,3,4]) { |v,i,m|
99
+ tracks << m.grab
100
+ }
101
+ tracks.should == [3,1]
102
+ end # === it grabs the :next value
103
+
104
+ it "skips grabbed values" do
105
+ tracks = []
106
+ About_Pos.Back([1,2,3,4,5]) { |v,i,m|
107
+ tracks << m.grab if m.next?
108
+ }
109
+ tracks.should == [4,2]
110
+ end # === it skips grabbed values
111
+
112
+ end # === describe :grab
113
+
114
+ describe ".top?" do
115
+
116
+ it "returns true if at real first" do
117
+ track = []
118
+ About_Pos.Back([1,2,3,4,5]) { |v,i,m| track.push m.top? }
119
+ track.should == [false, false, false, false, true]
120
+ end
121
+
122
+ end # === describe .top? ===
123
+
124
+ describe ".middle?" do
125
+
126
+ it "returns true if not at real first and real last" do
127
+ track = []
128
+ About_Pos.Back([4,5,6]) { |v,i,m| track.push m.middle? }
129
+ track.should == [false, true, false]
130
+ end
131
+
132
+ end # === describe .middle? ===
133
+
134
+ describe ".bottom?" do
135
+
136
+ it "returns true if at real last" do
137
+ track = []
138
+ About_Pos.Back([10,11,12,15]) { |v,i,m| track.push m.bottom? }
139
+ track.should == [true, false, false, false]
140
+ end
141
+
142
+ end # === describe .bottom? ===
143
+
94
144
  end # === describe Meta ===
95
145
 
96
146
  end # === describe about_pos ===
data/specs/Forward.rb CHANGED
@@ -81,6 +81,36 @@ describe "Forward" do
81
81
 
82
82
  end # === describe prev ===
83
83
 
84
+ describe :grab do
85
+
86
+ it "takes the next value" do
87
+ tracks = []
88
+ About_Pos.Forward([1,2,3,4]) do |v,i,m|
89
+ tracks << m.grab
90
+ end
91
+ tracks.should == [2,4]
92
+ end # === it takes the next value
93
+
94
+ it "skips the value that was taken" do
95
+ tracks = []
96
+ About_Pos.Forward([1,2,3,4]) do |v,i,m|
97
+ tracks << v
98
+ m.grab
99
+ end
100
+ tracks.should == [1,3]
101
+ end # === it skips the value that was taken
102
+
103
+ it "raises an error if there aren't anymore values" do
104
+ lambda {
105
+ About_Pos.Forward([1,2,3,4]) do |v,i,m|
106
+ 5.times { m.grab }
107
+ end
108
+ }.should.raise(About_Pos::No_Next).
109
+ message.should.match /No more values to grab/
110
+ end # === it raises an error if there aren't anymore values
111
+
112
+ end # === describe :grab
113
+
84
114
  describe "saving/reading data ([], []=)" do
85
115
 
86
116
  it "saves a value to be used on .prev meta" do
metadata CHANGED
@@ -1,43 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: about_pos
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - da99
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-04-04 00:00:00.000000000 Z
11
+ date: 2015-01-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '1.5'
20
20
  type: :development
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: '1.5'
27
- - !ruby/object:Gem::Dependency
28
- name: rake
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ">="
32
- - !ruby/object:Gem::Version
33
- version: '0'
34
- type: :development
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - ">="
39
- - !ruby/object:Gem::Version
40
- version: '0'
41
27
  - !ruby/object:Gem::Dependency
42
28
  name: bacon
43
29
  requirement: !ruby/object:Gem::Requirement
@@ -123,7 +109,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
123
109
  version: '0'
124
110
  requirements: []
125
111
  rubyforge_project:
126
- rubygems_version: 2.2.2
112
+ rubygems_version: 2.4.5
127
113
  signing_key:
128
114
  specification_version: 4
129
115
  summary: Provide more meta info while you loop back/forth on your arrays.