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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2d32b4473a261613c917ec8481da96bc7eaca8e4
4
- data.tar.gz: 60e714c5a3baf1318412f3c5817f373ddc0e6d57
3
+ metadata.gz: 1c4fecf3828f34fc0ce12ea540b3f7d3588667f7
4
+ data.tar.gz: 97d6333a9f75a6fc4e080c25778628473f12d9b9
5
5
  SHA512:
6
- metadata.gz: 885e97ebc16d00e86142e1c5bc4ca6a9d4b9e7528be2e7bba8d618b18f2b1a2bb80613a167673a6bccdf56142efceebc6189fb34265a1bd29186108a4201d721
7
- data.tar.gz: 682228a274f17a1849fc1824ec71a3778f5b93b07739e0878e2ae3af74e996b80e42b0ac3c8fde4f2f932a360d4ed84e9939cc3b404cd3b0df8f26f76192d3fd
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
- _finder(:reverse_each, &block)
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
- _finder(:each, &block)
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(acc, &block)
63
+ def select_by(&block)
51
64
  sequences = []
52
65
  find_multiple do |e|
53
66
  head_tail = block.call(e)
@@ -1,3 +1,3 @@
1
1
  class DoubleLinkedList
2
- VERSION = "0.2.0"
2
+ VERSION = "0.3.0"
3
3
  end
@@ -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([], &block)
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.2.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: 2016-11-23 00:00:00.000000000 Z
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.2.3
108
+ rubygems_version: 2.4.5
109
109
  signing_key:
110
110
  specification_version: 4
111
111
  summary: The missing Ruby Double Linked List