depth_first 0.0.3 → 0.0.4

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