flow_object 0.2.2 → 0.2.3

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
  SHA256:
3
- metadata.gz: ba086a330b400754a93c5b3bf51ee3b99962ca1bc93667393bd22cd6a777678f
4
- data.tar.gz: b940309b02b78f47cf6f73b683ea71e02b5ddb53673b4f29142f8d62590727c6
3
+ metadata.gz: cdecba76df1dc39202b7abcd32a626738447dc90ae0fc1d7cae695ca2aae876e
4
+ data.tar.gz: a6e4763933194dd419837ab96b75b22bc1e61b31473f6ccee3be052f2ac98e49
5
5
  SHA512:
6
- metadata.gz: a620ce7783b9e53d0ebcc87eb1ffa1dfdc07a9b198a3e98b5f96c83cc55fc15c981274cd7cad234fba2576711d26b086c6446e65e0beb3edb081c8a07773eede
7
- data.tar.gz: f1426f0bcef2a4f68ea5b60db7fbcdf586a1c38096e6f4e2e3a4692718286729c26fa86ead423631df55f54ada3a78d33590c0aa0f027a9e5461cb7781c9f272
6
+ metadata.gz: 11fe476ab5eb07624fb4629f520ee88a75b2da05e4393b72907247f84b3a569af961b1bcef5be91a86f47f03f6ebe639d305e6d2a7d80735efe9096e7a82a926
7
+ data.tar.gz: a1ae38390b9c66abb5f2a1df631eb3391b16563e5c7db1bae885802a93c50d272fa0b7388b8a2896f41fa0d924fba2b891a20bc51482168f028067c469fb222f
data/Gemfile.lock CHANGED
@@ -1,8 +1,8 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- flow_object (0.2.2)
5
- mature_factory (~> 0.2.15)
4
+ flow_object (0.2.3)
5
+ mature_factory (~> 0.2.17)
6
6
 
7
7
  GEM
8
8
  remote: https://rubygems.org/
@@ -10,7 +10,7 @@ GEM
10
10
  coderay (1.1.3)
11
11
  diff-lcs (1.4.4)
12
12
  dry-inflector (0.1.2)
13
- mature_factory (0.2.15)
13
+ mature_factory (0.2.17)
14
14
  dry-inflector (~> 0.1)
15
15
  method_source (1.0.0)
16
16
  pry (0.13.1)
data/flow_object.gemspec CHANGED
@@ -36,7 +36,7 @@ Gem::Specification.new do |spec|
36
36
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
37
37
  spec.require_paths = ['lib']
38
38
 
39
- spec.add_dependency 'mature_factory', '~> 0.2.15'
39
+ spec.add_dependency 'mature_factory', '~> 0.2.17'
40
40
 
41
41
  spec.add_development_dependency 'bundler', '~> 1.17'
42
42
  spec.add_development_dependency 'pry'
@@ -20,6 +20,10 @@ module FlowObject
20
20
  self.class.after_output_initialize.call(@output)
21
21
  end
22
22
 
23
+ def on_exception(exception = nil)
24
+ # NOOP
25
+ end
26
+
23
27
  def on_failure(failed_step = nil)
24
28
  # NOOP
25
29
  end
@@ -64,7 +68,7 @@ module FlowObject
64
68
  end
65
69
 
66
70
  def flow(name = :main, &block)
67
- wrap(name, delegate: true, &block)
71
+ wrap(name, delegate: true, on_exception: :halt, &block)
68
72
  end
69
73
 
70
74
  def link_with_delegation(target, object, accessor, delegate)
@@ -105,8 +109,10 @@ module FlowObject
105
109
  end
106
110
 
107
111
  def __fo_resolve__(runner)
108
- new(runner.flow, runner.step_name).tap do |handler|
109
- if runner.failure
112
+ new(runner.flow.public_send(runner.step_name), runner.step_name).tap do |handler|
113
+ if runner.flow.exceptional?
114
+ __fo_notify_exception__(handler, runner.flow.exception)
115
+ elsif runner.failure
110
116
  __fo_notify_error__(handler, runner.step_name)
111
117
  else
112
118
  __fo_notify_success__(handler)
@@ -114,6 +120,20 @@ module FlowObject
114
120
  end
115
121
  end
116
122
 
123
+ def __fo_notify_exception__(handler, exception)
124
+ step = exception.step_id.title
125
+ if handler.output.respond_to?(:"on_#{step}_exception")
126
+ handler.output.public_send(:"on_#{step}_exception", exception)
127
+ elsif handler.output.respond_to?(:on_exception)
128
+ handler.output.on_exception(exception)
129
+ elsif handler.respond_to?(:"on_#{step}_exception")
130
+ handler.public_send(:"on_#{step}_exception", exception)
131
+ else
132
+ handler.on_exception(exception)
133
+ end
134
+ __fo_notify_error__(handler, exception.step_id.title)
135
+ end
136
+
117
137
  def __fo_notify_error__(handler, step)
118
138
  if handler.output.respond_to?(:"on_#{step}_failure")
119
139
  handler.output.public_send(:"on_#{step}_failure")
@@ -1,3 +1,3 @@
1
1
  module FlowObject
2
- VERSION = '0.2.2'.freeze
2
+ VERSION = '0.2.3'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: flow_object
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.2.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrii Baran
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-04-20 00:00:00.000000000 Z
11
+ date: 2021-04-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: mature_factory
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 0.2.15
19
+ version: 0.2.17
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 0.2.15
26
+ version: 0.2.17
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: bundler
29
29
  requirement: !ruby/object:Gem::Requirement