flow_object 0.1.5 → 0.2.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 +4 -4
- data/Gemfile.lock +3 -3
- data/flow_object.gemspec +1 -1
- data/lib/flow_object/base.rb +45 -11
- data/lib/flow_object/version.rb +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0c4e0bf60b9bd1664f1e627b21f7ab1f9054abba
|
4
|
+
data.tar.gz: e8e9520592e1e9cc689c15be26d744580c774396
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8edbfe815c46426494dfb7343f9f9d553e4f5889e79af5d7f09b2cd7202677cef7106c2b1ea6c5eb4892b3be24b6c6422465080c61db58b59f695a5511a1d054
|
7
|
+
data.tar.gz: b57d9c98ce427889d725c8297eadde4c3c190512ed9a9c54b8e2bf0ba224eafb785373cbedb0de56ae62729c4b40006323abad8ac042658d11c455c9373f95b0
|
data/Gemfile.lock
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
flow_object (0.
|
5
|
-
mature_factory (~> 0.2.
|
4
|
+
flow_object (0.2.0)
|
5
|
+
mature_factory (~> 0.2.13)
|
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.
|
13
|
+
mature_factory (0.2.13)
|
14
14
|
dry-inflector (~> 0.1)
|
15
15
|
simple_facade (~> 0.2)
|
16
16
|
method_source (1.0.0)
|
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.
|
39
|
+
spec.add_dependency 'mature_factory', '~> 0.2.13'
|
40
40
|
|
41
41
|
spec.add_development_dependency 'bundler', '~> 1.17'
|
42
42
|
spec.add_development_dependency 'pry'
|
data/lib/flow_object/base.rb
CHANGED
@@ -6,7 +6,7 @@ module FlowObject
|
|
6
6
|
composed_of :stages, :inputs, :outputs
|
7
7
|
|
8
8
|
class << self
|
9
|
-
|
9
|
+
attr_reader :in, :out, :initial_values
|
10
10
|
end
|
11
11
|
|
12
12
|
attr_reader :output, :given
|
@@ -14,6 +14,7 @@ module FlowObject
|
|
14
14
|
def initialize(given)
|
15
15
|
@given = given
|
16
16
|
@output = self.class.send(:__fo_wrap_output__)
|
17
|
+
self.class.after_output_initialize.call(@output) if self.class.after_output_initialize
|
17
18
|
end
|
18
19
|
|
19
20
|
def on_failure(failed_step = nil)
|
@@ -29,20 +30,25 @@ module FlowObject
|
|
29
30
|
super
|
30
31
|
subclass.from(self.in)
|
31
32
|
subclass.to(self.out)
|
33
|
+
subclass.after_input_initialize(&self.after_input_initialize)
|
34
|
+
subclass.after_flow_initialize(&self.after_flow_initialize)
|
35
|
+
subclass.after_input_check(&self.after_input_check)
|
36
|
+
subclass.after_flow_check(&self.after_flow_check)
|
37
|
+
subclass.after_output_initialize(&self.after_output_initialize)
|
32
38
|
end
|
33
39
|
|
34
40
|
def from(input)
|
35
|
-
|
41
|
+
@in = input
|
36
42
|
self
|
37
43
|
end
|
38
44
|
|
39
45
|
def to(output)
|
40
|
-
|
46
|
+
@out = output
|
41
47
|
self
|
42
48
|
end
|
43
49
|
|
44
50
|
def accept(*values)
|
45
|
-
|
51
|
+
@initial_values = values
|
46
52
|
self
|
47
53
|
end
|
48
54
|
|
@@ -54,32 +60,60 @@ module FlowObject
|
|
54
60
|
wrap(name, delegate: true, &block)
|
55
61
|
end
|
56
62
|
|
63
|
+
def after_input_initialize(&block)
|
64
|
+
block_given? ? @after_input_initialize = block : @after_input_initialize
|
65
|
+
end
|
66
|
+
|
67
|
+
def after_flow_initialize(&block)
|
68
|
+
block_given? ? @after_flow_initialize = block : @after_flow_initialize
|
69
|
+
end
|
70
|
+
|
71
|
+
def after_input_check(&block)
|
72
|
+
block_given? ? @after_input_check = block : @after_input_check
|
73
|
+
end
|
74
|
+
|
75
|
+
def after_flow_check(&block)
|
76
|
+
block_given? ? @after_flow_check = block : @after_flow_check
|
77
|
+
end
|
78
|
+
|
79
|
+
def after_output_initialize(&block)
|
80
|
+
block_given? ? @after_output_initialize = block : @after_output_initialize
|
81
|
+
end
|
82
|
+
|
57
83
|
private
|
58
84
|
|
59
85
|
def halt_flow?(object, id)
|
60
|
-
|
86
|
+
false
|
61
87
|
end
|
62
88
|
|
63
89
|
def __fo_process__(flow: :main)
|
64
|
-
failure, step_name = false, self.in
|
65
|
-
plan = __fo_build_flow__(flow, step_name, __fo_wrap_input__)
|
90
|
+
failure, step_name, group = false, self.in, :input
|
91
|
+
plan = __fo_build_flow__(flow, step_name, group, __fo_wrap_input__)
|
66
92
|
cascade = __fo_run_flow__(plan,
|
67
93
|
proc{|_,id| step_name = id.title},
|
68
|
-
proc{ failure = true }
|
94
|
+
proc{ failure = true },
|
95
|
+
after_input_initialize,
|
96
|
+
after_flow_initialize)
|
97
|
+
after_flow_check.call(cascade.public_send(step_name)) if after_flow_check
|
69
98
|
[cascade, step_name, failure]
|
70
99
|
end
|
71
100
|
|
72
|
-
def __fo_build_flow__(flow, step_name, object)
|
73
|
-
public_send(:"build_#{flow}", step_name, object)
|
101
|
+
def __fo_build_flow__(flow, step_name, group, object)
|
102
|
+
public_send(:"build_#{flow}", title: step_name, group: group, object: object)
|
74
103
|
end
|
75
104
|
|
76
|
-
def __fo_run_flow__(plan, on_step, on_failure)
|
105
|
+
def __fo_run_flow__(plan, on_step, on_failure, on_input, on_flow)
|
106
|
+
step_index = 0
|
77
107
|
plan.call do |object, id|
|
108
|
+
on_input.call(object) if on_input && id.group == :input
|
109
|
+
on_flow.call(object) if step_index == 1 && on_flow && id.group == :stage
|
78
110
|
on_step.call(object, id)
|
111
|
+
step_index += 1
|
79
112
|
if halt_flow?(object, id)
|
80
113
|
on_failure.call(object, id)
|
81
114
|
throw :halt
|
82
115
|
end
|
116
|
+
after_input_check.call(object) if after_input_check && id.group == :input
|
83
117
|
end
|
84
118
|
end
|
85
119
|
|
data/lib/flow_object/version.rb
CHANGED
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.
|
4
|
+
version: 0.2.0
|
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-03-
|
11
|
+
date: 2021-03-05 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.
|
19
|
+
version: 0.2.13
|
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.
|
26
|
+
version: 0.2.13
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: bundler
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|