skn_utils 3.3.6 → 3.3.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/skn_utils/lists/circular_linked_list.rb +4 -12
- data/lib/skn_utils/lists/doubly_linked_list.rb +2 -2
- data/lib/skn_utils/lists/link_node.rb +17 -1
- data/lib/skn_utils/lists/linked_commons.rb +2 -2
- data/lib/skn_utils/lists/linked_list.rb +4 -4
- data/lib/skn_utils/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ee871d64be32ad3a000a84aafc3401bccad14807
|
4
|
+
data.tar.gz: 74cb4575b5e449e74a91cec8e588c333787b3db7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a4e9361b994e283cdd2651ba3763010bd1dabdc0593cd601dc0a30eda59449b345920584725be2f7ee025ca1a022bdfa4f9f35935b723717316372e9a201fcfe
|
7
|
+
data.tar.gz: 3b47a9650aa686509f4efdaf0c632cc849115ed0cd2b44386e9f49f62e9369ab84b60c17fa52ca533d5861bc21f10ec776bc63a93a2404bd8b13797a285df31f
|
@@ -54,14 +54,14 @@ module SknUtils
|
|
54
54
|
node = node.next
|
55
55
|
index -= 1
|
56
56
|
@current = node
|
57
|
-
break if position
|
57
|
+
break if position.equal?(node)
|
58
58
|
end
|
59
59
|
elsif index < 0
|
60
60
|
while index < 0 and node and node.prev
|
61
61
|
node = node.prev
|
62
62
|
index += 1
|
63
63
|
@current = node
|
64
|
-
break if position
|
64
|
+
break if position.equal?(node)
|
65
65
|
end
|
66
66
|
end
|
67
67
|
current
|
@@ -83,10 +83,6 @@ module SknUtils
|
|
83
83
|
self.head = node
|
84
84
|
node.prev = self.tail
|
85
85
|
self.tail.next = node
|
86
|
-
elsif self.tail == target
|
87
|
-
self.tail = node
|
88
|
-
node.next = self.head
|
89
|
-
self.head.prev = node
|
90
86
|
end
|
91
87
|
self.size += 1
|
92
88
|
end
|
@@ -103,10 +99,6 @@ module SknUtils
|
|
103
99
|
self.tail = node
|
104
100
|
node.next = self.head
|
105
101
|
self.head.prev = node
|
106
|
-
elsif self.head == target # new head
|
107
|
-
self.head = node
|
108
|
-
node.prev = self.tail
|
109
|
-
self.tail.next = node
|
110
102
|
end
|
111
103
|
self.size += 1
|
112
104
|
end
|
@@ -119,12 +111,12 @@ module SknUtils
|
|
119
111
|
@current = nil
|
120
112
|
self.head = nil
|
121
113
|
self.tail = nil
|
122
|
-
elsif target_node
|
114
|
+
elsif target_node.equal?(self.head) # top
|
123
115
|
@current = target_node.next
|
124
116
|
@current.prev = target_node.prev
|
125
117
|
self.tail.next = @current
|
126
118
|
self.head = @current
|
127
|
-
elsif target_node
|
119
|
+
elsif target_node.equal?(self.tail) # bottom
|
128
120
|
@current = target_node.prev
|
129
121
|
@current.next = target_node.next
|
130
122
|
self.head.prev = @current
|
@@ -73,7 +73,7 @@ module SknUtils
|
|
73
73
|
target = find_by_value(position_value)
|
74
74
|
node = LinkNode.new(value, target, :before, self, &@match_value)
|
75
75
|
@current = node if target
|
76
|
-
self.head = node if self.head
|
76
|
+
self.head = node if self.head.equal?(target)
|
77
77
|
self.tail = node if self.tail.nil?
|
78
78
|
self.size += 1
|
79
79
|
end
|
@@ -84,7 +84,7 @@ module SknUtils
|
|
84
84
|
node = LinkNode.new(value, target, :after, self, &@match_value)
|
85
85
|
@current = node
|
86
86
|
self.head = node if self.head.nil?
|
87
|
-
self.tail = node if self.tail
|
87
|
+
self.tail = node if self.tail.equal?(target)
|
88
88
|
self.size += 1
|
89
89
|
end
|
90
90
|
|
@@ -6,6 +6,8 @@ module SknUtils
|
|
6
6
|
module Lists
|
7
7
|
|
8
8
|
class LinkNode
|
9
|
+
include Comparable
|
10
|
+
|
9
11
|
attr_accessor :prev, :next, :value
|
10
12
|
|
11
13
|
def initialize(val, anchor_node=nil, strategy=:after, mgr=nil, &cmp_key)
|
@@ -41,7 +43,21 @@ module SknUtils
|
|
41
43
|
end
|
42
44
|
|
43
45
|
def match_by_value(other_value)
|
44
|
-
@cmp_proc.call(value) === @cmp_proc.call(other_value)
|
46
|
+
@cmp_proc.call(self.value) === @cmp_proc.call(other_value)
|
47
|
+
end
|
48
|
+
|
49
|
+
# Returns
|
50
|
+
# 0 if first operand equals second,
|
51
|
+
# 1 if first operand is greater than the second and
|
52
|
+
# -1 if first operand is less than the second.
|
53
|
+
def <=>(other_node)
|
54
|
+
if @cmp_proc.call(self.value) == @cmp_proc.call(other_node.value)
|
55
|
+
0
|
56
|
+
elsif @cmp_proc.call(self.value) > @cmp_proc.call(other_node.value)
|
57
|
+
1
|
58
|
+
else
|
59
|
+
-1
|
60
|
+
end
|
45
61
|
end
|
46
62
|
|
47
63
|
# returns next node
|
@@ -114,14 +114,14 @@ module SknUtils
|
|
114
114
|
while position do
|
115
115
|
block.call( position.value.dup )
|
116
116
|
position = position.next
|
117
|
-
break if position
|
117
|
+
break if position.equal?(@current)
|
118
118
|
end
|
119
119
|
else
|
120
120
|
Enumerator.new do |yielder|
|
121
121
|
while position do
|
122
122
|
yielder << position.value.dup
|
123
123
|
position = position.next
|
124
|
-
break if position
|
124
|
+
break if position.equal?(@current)
|
125
125
|
end
|
126
126
|
end
|
127
127
|
end
|
@@ -61,7 +61,7 @@ module SknUtils
|
|
61
61
|
prior, target = find_by_value(position_value)
|
62
62
|
node = LinkNode.new(value, prior, :single, self, &@match_value)
|
63
63
|
node.next = target if target
|
64
|
-
self.head = node if self.head
|
64
|
+
self.head = node if self.head.equal?(target)
|
65
65
|
self.tail = node if self.tail.nil?
|
66
66
|
@current = node
|
67
67
|
self.size += 1
|
@@ -72,7 +72,7 @@ module SknUtils
|
|
72
72
|
prior, target = find_by_value(position_value)
|
73
73
|
node = LinkNode.new(value, target, :single, self, &@match_value)
|
74
74
|
self.head = node if self.head.nil?
|
75
|
-
self.tail = node if self.tail
|
75
|
+
self.tail = node if self.tail.equal?(target)
|
76
76
|
@current = node
|
77
77
|
self.size += 1
|
78
78
|
end
|
@@ -82,8 +82,8 @@ module SknUtils
|
|
82
82
|
prior, target_node = find_by_value(value)
|
83
83
|
@current = prior.nil? ? target_node.next : prior
|
84
84
|
@current.next = target_node.remove! if @current && target_node
|
85
|
-
self.tail = @current.next if @current && self.tail
|
86
|
-
self.head = @current.next if @current && self.head
|
85
|
+
self.tail = @current.next if @current && self.tail.equal?(target_node)
|
86
|
+
self.head = @current.next if @current && self.head.equal?(target_node)
|
87
87
|
self.size -= 1
|
88
88
|
end
|
89
89
|
|
data/lib/skn_utils/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: skn_utils
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.3.
|
4
|
+
version: 3.3.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- James Scott Jr
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-08-
|
11
|
+
date: 2017-08-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: deep_merge
|