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 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