depth_first 0.0.3 → 0.0.4

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: 96d851b457127742d9fa74c829f7b46c89dcc059
4
- data.tar.gz: 7fa24817046368b4988c83819b8decee910d164b
3
+ metadata.gz: efaff787504788c8b6d0a88aa3c334f8513493a7
4
+ data.tar.gz: 2067f081af9bb7bc76754d9cdc2024c5a6585bde
5
5
  SHA512:
6
- metadata.gz: 802e93fa8dc585dd8f37d8d6d2c2d6a7da17dbdee80c65ec6a8e2bd114aba4a3028199b27006510fabb61554a6169eebfaeb2763d4d150808430ad717b926a42
7
- data.tar.gz: 489c01c625fea75f5600d138fb428e1a32584cab7273cd017b6c785ded18ba977f46b917b82b64448f7a19437341b79c02cddc1131acf36ed708c5792df6ab43
6
+ metadata.gz: 828115bab80ba6ce071ef9922076f0477fa110a97fdb326dec20a90511d71f1c7da7f60a4a99e2917007d25d616fd2a69499e35107424c6873af147a6d90113c
7
+ data.tar.gz: ebab2b1b2ee5cc93ef7d54560837cfdfade0bc21997955a7c83a44238972382094c8e0f3e817d956512f9c3cde5327f414ffa3f676d0f5d7bde6bad0979da7b9
@@ -0,0 +1,24 @@
1
+ module DepthFirst
2
+ # Base parallel aggregator class
3
+ class ParallelAggregator < Task
4
+ TASKS = [].freeze
5
+ KEY = nil
6
+
7
+ def perform
8
+ key = self.class::KEY
9
+ value = self.class::TASKS.map { |task| execute_promise(task) }
10
+ .reduce([]) { |a, e| resolve_promise(a, e) }
11
+ { key => value }
12
+ end
13
+
14
+ private
15
+
16
+ def execute_promise(task)
17
+ Concurrent::Promise.new { task.new(options).perform }.execute
18
+ end
19
+
20
+ def resolve_promise(arr, result)
21
+ arr.push(result.value)
22
+ end
23
+ end
24
+ end
@@ -4,16 +4,13 @@ module DepthFirst
4
4
  TASKS = [].freeze
5
5
 
6
6
  def perform
7
- tasks.map { |task| execute_promise(task) }
8
- .reduce(options) { |a, e| resolve_promise(a, e) }
7
+ self.class::TASKS
8
+ .map { |task| execute_promise(task) }
9
+ .reduce(options) { |a, e| resolve_promise(a, e) }
9
10
  end
10
11
 
11
12
  private
12
13
 
13
- def tasks
14
- self.class::TASKS
15
- end
16
-
17
14
  def execute_promise(task)
18
15
  Concurrent::Promise.new { task.new(options).perform }.execute
19
16
  end
@@ -0,0 +1,13 @@
1
+ module DepthFirst
2
+ # Base sequential aggregator class
3
+ class SequentialAggregator < Task
4
+ TASKS = [].freeze
5
+ KEY = nil
6
+
7
+ def perform
8
+ key = self.class::KEY
9
+ value = self.class::TASKS.map { |task| task.new(options).perform }
10
+ { key => value }
11
+ end
12
+ end
13
+ end
@@ -4,15 +4,9 @@ module DepthFirst
4
4
  TASKS = [].freeze
5
5
 
6
6
  def perform
7
- tasks.reduce(options) do |hsh, task|
7
+ self.class::TASKS.reduce(options) do |hsh, task|
8
8
  hsh.merge(task.new(hsh).perform)
9
9
  end
10
10
  end
11
-
12
- private
13
-
14
- def tasks
15
- self.class::TASKS
16
- end
17
11
  end
18
12
  end
@@ -3,12 +3,12 @@ module DepthFirst
3
3
  class Task
4
4
  attr_reader :options
5
5
 
6
- def initialize(options)
7
- @options = Concurrent::Hash.new.merge(options)
6
+ def initialize(options = {})
7
+ @options = Concurrent::Hash.new.merge(options.to_h)
8
8
  end
9
9
 
10
10
  def perform
11
- options
11
+ {}
12
12
  end
13
13
  end
14
14
  end
@@ -1,3 +1,3 @@
1
1
  module DepthFirst
2
- VERSION = '0.0.3'.freeze
2
+ VERSION = '0.0.4'.freeze
3
3
  end
data/lib/depth_first.rb CHANGED
@@ -1,7 +1,9 @@
1
1
  require 'concurrent'
2
2
  require 'depth_first/task'
3
- require 'depth_first/sequential_organizer'
3
+ require 'depth_first/parallel_aggregator'
4
4
  require 'depth_first/parallel_organizer'
5
+ require 'depth_first/sequential_aggregator'
6
+ require 'depth_first/sequential_organizer'
5
7
  require 'depth_first/version'
6
8
 
7
9
  # Namespace
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: depth_first
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Isaac Anthony
@@ -48,7 +48,9 @@ files:
48
48
  - README.md
49
49
  - Rakefile
50
50
  - lib/depth_first.rb
51
+ - lib/depth_first/parallel_aggregator.rb
51
52
  - lib/depth_first/parallel_organizer.rb
53
+ - lib/depth_first/sequential_aggregator.rb
52
54
  - lib/depth_first/sequential_organizer.rb
53
55
  - lib/depth_first/task.rb
54
56
  - lib/depth_first/version.rb