double_linked_list 0.2.0 → 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.
- checksums.yaml +4 -4
- data/lib/double_linked_list/element.rb +18 -5
- data/lib/double_linked_list/version.rb +1 -1
- data/lib/double_linked_list.rb +3 -3
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1c4fecf3828f34fc0ce12ea540b3f7d3588667f7
|
4
|
+
data.tar.gz: 97d6333a9f75a6fc4e080c25778628473f12d9b9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 90ccb0be9058746d0a8e9e99ae1c365cfba7dc840895a07910e6aec929698842aae03a22e4aed77d522adb5ebccd5fcb399fdbd05ad42c48d00800675cfbd234
|
7
|
+
data.tar.gz: b767d3efec0282b2fc3487ae4ca6141d2289d083ee8fe48d9a491dbad6d482f7749593857ad66b6b3667061e57f1cddec0e42d03d9cda15dbadbb704885ff667
|
@@ -9,18 +9,31 @@ class DoubleLinkedList
|
|
9
9
|
_next.each(&block) if _next
|
10
10
|
end
|
11
11
|
|
12
|
+
# Avoid calling myself on finds
|
13
|
+
def _each(&block)
|
14
|
+
_next.each(&block) if _next
|
15
|
+
end
|
16
|
+
|
12
17
|
def find(datum)
|
13
18
|
find_next_by do |elem|
|
14
19
|
elem.datum == datum
|
15
20
|
end
|
16
21
|
end
|
17
22
|
|
18
|
-
def find_previous_by(&block)
|
19
|
-
|
23
|
+
def find_previous_by(exclude_self = true, &block)
|
24
|
+
method = exclude_self ? :_reverse_each : :reverse_each
|
25
|
+
_finder(method, &block)
|
20
26
|
end
|
21
27
|
|
22
|
-
def find_next_by(&block)
|
23
|
-
|
28
|
+
def find_next_by(exclude_self = true, &block)
|
29
|
+
method = exclude_self ? :_each : :each
|
30
|
+
_finder(method, &block)
|
31
|
+
end
|
32
|
+
|
33
|
+
# This is done to avoid calling self in the block
|
34
|
+
# For not finding myself as the first element in the list
|
35
|
+
def _reverse_each(&block)
|
36
|
+
previous.reverse_each(&block) if previous
|
24
37
|
end
|
25
38
|
|
26
39
|
def reverse_each(&block)
|
@@ -47,7 +60,7 @@ class DoubleLinkedList
|
|
47
60
|
_next ? _next.chunk_by(acc, &block) : acc
|
48
61
|
end
|
49
62
|
|
50
|
-
def select_by(
|
63
|
+
def select_by(&block)
|
51
64
|
sequences = []
|
52
65
|
find_multiple do |e|
|
53
66
|
head_tail = block.call(e)
|
data/lib/double_linked_list.rb
CHANGED
@@ -44,7 +44,7 @@ class DoubleLinkedList
|
|
44
44
|
end
|
45
45
|
|
46
46
|
def find_by(&block)
|
47
|
-
head.find_next_by(&block)
|
47
|
+
head.find_next_by(false, &block)
|
48
48
|
end
|
49
49
|
|
50
50
|
def reverse_find(datum)
|
@@ -54,7 +54,7 @@ class DoubleLinkedList
|
|
54
54
|
end
|
55
55
|
|
56
56
|
def reverse_find_by(&block)
|
57
|
-
last.find_previous_by(&block)
|
57
|
+
last.find_previous_by(false, &block)
|
58
58
|
end
|
59
59
|
|
60
60
|
def chunk_by(&block)
|
@@ -62,7 +62,7 @@ class DoubleLinkedList
|
|
62
62
|
end
|
63
63
|
|
64
64
|
def select_by(&block)
|
65
|
-
head.select_by(
|
65
|
+
head.select_by(&block)
|
66
66
|
end
|
67
67
|
|
68
68
|
def to_a
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: double_linked_list
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Artur Pañach
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-03-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -105,7 +105,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
105
105
|
version: '0'
|
106
106
|
requirements: []
|
107
107
|
rubyforge_project:
|
108
|
-
rubygems_version: 2.
|
108
|
+
rubygems_version: 2.4.5
|
109
109
|
signing_key:
|
110
110
|
specification_version: 4
|
111
111
|
summary: The missing Ruby Double Linked List
|