double_linked_list 0.2.0 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|