conv 0.0.2 → 0.0.3
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/VERSION +1 -1
- data/conv.gemspec +2 -0
- data/lib/array.rb +8 -0
- data/lib/loop.rb +72 -0
- metadata +3 -1
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.3
|
data/conv.gemspec
CHANGED
data/lib/array.rb
ADDED
data/lib/loop.rb
ADDED
@@ -0,0 +1,72 @@
|
|
1
|
+
module Loopable
|
2
|
+
# Mixin for Array like objects
|
3
|
+
|
4
|
+
#set the position
|
5
|
+
def set_position(index)
|
6
|
+
@position = index
|
7
|
+
end
|
8
|
+
alias_method :set_pos, :set_position
|
9
|
+
|
10
|
+
#returns the position ( current index)
|
11
|
+
def position
|
12
|
+
unless(defined?(@position)) then
|
13
|
+
@position = 0
|
14
|
+
end
|
15
|
+
@position
|
16
|
+
end
|
17
|
+
alias_method :current_index, :position
|
18
|
+
alias_method :pointer, :pointer
|
19
|
+
|
20
|
+
#retruns the object at position
|
21
|
+
def current
|
22
|
+
#if self[position].respond_to?(:loopable_current) then
|
23
|
+
self[position].loopable_current if self[position].respond_to?('loopable_current')
|
24
|
+
#end
|
25
|
+
self[position]
|
26
|
+
end
|
27
|
+
|
28
|
+
#increments position, looping back to begining
|
29
|
+
#if necessary
|
30
|
+
# returns the object at the new position
|
31
|
+
def next
|
32
|
+
if(position == self.size - 1) then
|
33
|
+
@position = 0
|
34
|
+
else
|
35
|
+
@position = @position + 1
|
36
|
+
end
|
37
|
+
current
|
38
|
+
end
|
39
|
+
|
40
|
+
|
41
|
+
|
42
|
+
#moves the position forward a number of steps and
|
43
|
+
#returns the object stored there
|
44
|
+
def forward(steps = 1)
|
45
|
+
steps.times { self.next }
|
46
|
+
current
|
47
|
+
end
|
48
|
+
|
49
|
+
# decrements position, looping back from the end
|
50
|
+
#if necessary
|
51
|
+
def prev
|
52
|
+
if(position == 0) then
|
53
|
+
@position = self.size - 1
|
54
|
+
else
|
55
|
+
@position = @position - 1
|
56
|
+
end
|
57
|
+
current
|
58
|
+
end
|
59
|
+
|
60
|
+
#moves the position back a number of steps and
|
61
|
+
#returns the object stored there
|
62
|
+
def backward(steps = 1)
|
63
|
+
steps.times { self.prev }
|
64
|
+
current
|
65
|
+
end
|
66
|
+
|
67
|
+
end # => module Loop
|
68
|
+
|
69
|
+
class Loop < Array
|
70
|
+
include Loopable
|
71
|
+
end
|
72
|
+
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: conv
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- codesponge
|
@@ -40,6 +40,8 @@ files:
|
|
40
40
|
- VERSION
|
41
41
|
- conv.gemspec
|
42
42
|
- lib/conv.rb
|
43
|
+
- lib/array.rb
|
44
|
+
- lib/loop.rb
|
43
45
|
- test/helper.rb
|
44
46
|
- test/test_array.rb
|
45
47
|
- test/test_loop.rb
|