skn_utils 3.3.6 → 3.3.7
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 +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
|