linearly 0.1.0 → 0.1.1
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/lib/linearly/errors/broken_contract.rb +5 -5
- data/lib/linearly/errors/state_not_returned.rb +3 -3
- data/lib/linearly/flow.rb +3 -3
- data/lib/linearly/mixins/flow_builder.rb +3 -3
- data/lib/linearly/mixins/reducer.rb +3 -3
- data/lib/linearly/runner.rb +2 -2
- data/lib/linearly/step/dynamic.rb +4 -4
- data/lib/linearly/step/static.rb +8 -9
- data/lib/linearly/validation.rb +9 -9
- data/lib/linearly/version.rb +2 -2
- data/spec/dynamic_step.rb +3 -3
- data/spec/errors/broken_contract_spec.rb +5 -5
- data/spec/errors/state_not_returned_spec.rb +3 -3
- data/spec/flow_spec.rb +10 -10
- data/spec/implicit_step.rb +11 -0
- data/spec/implicit_step_spec.rb +12 -0
- data/spec/runner_spec.rb +8 -8
- data/spec/spec_helper.rb +1 -0
- data/spec/static_step.rb +2 -2
- data/spec/step/dynamic_spec.rb +8 -8
- data/spec/step/static_spec.rb +10 -10
- data/spec/test_step.rb +2 -2
- data/spec/validation_spec.rb +17 -17
- metadata +39 -103
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c9c772fe40a7e770ddaa6e198b2e727a50ab95fe
|
4
|
+
data.tar.gz: f47f4acec7c61e455e1c75964d09f58d04681666
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4ba4441eea7248bc05c734f085df9a1cf317b0a8315378a2ffb3f44777ecd8f12a851082d604507dcee0dc342a68bb2f03c31d10bd2f9ee6713ca7378629ddf2
|
7
|
+
data.tar.gz: d688fb77d8793d1ed65c345949e9ffc971efd8437338c94cb0271acd7de1b41c4e7778868e2c0959b3aacac1d9c52b6bb8e13ace5dae900dfe36a427f3c8c163
|
@@ -61,7 +61,7 @@ module Linearly
|
|
61
61
|
def copy
|
62
62
|
'failed input expectations'
|
63
63
|
end
|
64
|
-
end
|
64
|
+
end
|
65
65
|
|
66
66
|
# {Outputs} means a {BrokenContract} on outputs.
|
67
67
|
class Outputs < BrokenContract
|
@@ -74,7 +74,7 @@ module Linearly
|
|
74
74
|
def copy
|
75
75
|
'failed output expectations'
|
76
76
|
end
|
77
|
-
end
|
78
|
-
end
|
79
|
-
end
|
80
|
-
end
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
data/lib/linearly/flow.rb
CHANGED
data/lib/linearly/runner.rb
CHANGED
@@ -28,7 +28,7 @@ module Linearly
|
|
28
28
|
# FindUser.new.outputs
|
29
29
|
# => { user: User }
|
30
30
|
def outputs
|
31
|
-
|
31
|
+
{}
|
32
32
|
end
|
33
33
|
|
34
34
|
# User-defined logic for this +Step+
|
@@ -45,6 +45,6 @@ module Linearly
|
|
45
45
|
def call(_state)
|
46
46
|
raise NotImplementedError
|
47
47
|
end
|
48
|
-
end
|
49
|
-
end
|
50
|
-
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
data/lib/linearly/step/static.rb
CHANGED
@@ -33,7 +33,7 @@ module Linearly
|
|
33
33
|
# def call
|
34
34
|
# succeed(user: User.find(user_id))
|
35
35
|
# end
|
36
|
-
# end
|
36
|
+
# end
|
37
37
|
# FindUser.call(Statefully::State.create(user_id: params[:id]))
|
38
38
|
def self.call(state)
|
39
39
|
new(state).call
|
@@ -68,7 +68,7 @@ module Linearly
|
|
68
68
|
# FindUser.outputs
|
69
69
|
# => { user: User }
|
70
70
|
def self.outputs
|
71
|
-
|
71
|
+
{}
|
72
72
|
end
|
73
73
|
|
74
74
|
private
|
@@ -88,7 +88,7 @@ module Linearly
|
|
88
88
|
end
|
89
89
|
private_class_method :new
|
90
90
|
|
91
|
-
# Dynamically pass
|
91
|
+
# Dynamically pass valid inputs to the wrapped +State+
|
92
92
|
#
|
93
93
|
# @param name [Symbol|String]
|
94
94
|
# @param args [Array<Object>]
|
@@ -98,9 +98,8 @@ module Linearly
|
|
98
98
|
# @raise [NoMethodError]
|
99
99
|
# @api private
|
100
100
|
def method_missing(name, *args, &block)
|
101
|
-
state.
|
102
|
-
|
103
|
-
super
|
101
|
+
allowed = (state.methods + self.class.inputs.keys).include?(name)
|
102
|
+
allowed ? state.send(name, *args, &block) : super
|
104
103
|
end
|
105
104
|
|
106
105
|
# Companion to `method_missing`
|
@@ -115,6 +114,6 @@ module Linearly
|
|
115
114
|
def respond_to_missing?(name, include_private = false)
|
116
115
|
state.send(:respond_to_missing?, name, include_private)
|
117
116
|
end
|
118
|
-
end
|
119
|
-
end
|
120
|
-
end
|
117
|
+
end
|
118
|
+
end
|
119
|
+
end
|
data/lib/linearly/validation.rb
CHANGED
@@ -51,7 +51,7 @@ module Linearly
|
|
51
51
|
def error_class
|
52
52
|
Errors::BrokenContract::Inputs
|
53
53
|
end
|
54
|
-
end
|
54
|
+
end
|
55
55
|
|
56
56
|
# {Inputs} is a post-flight {Validation} of {State} outputs
|
57
57
|
class Outputs < Validation
|
@@ -64,7 +64,7 @@ module Linearly
|
|
64
64
|
def error_class
|
65
65
|
Errors::BrokenContract::Outputs
|
66
66
|
end
|
67
|
-
end
|
67
|
+
end
|
68
68
|
|
69
69
|
# {Validator} is a stateful helper applying expecations to a {State}
|
70
70
|
class Validator
|
@@ -118,7 +118,7 @@ module Linearly
|
|
118
118
|
.map { |key| [key, Failure::Missing.instance] }
|
119
119
|
.to_h
|
120
120
|
end
|
121
|
-
end
|
121
|
+
end
|
122
122
|
private_constant :Validator
|
123
123
|
|
124
124
|
# {Failure} is a representation of a problem encountered when validating a
|
@@ -149,7 +149,7 @@ module Linearly
|
|
149
149
|
def missing?
|
150
150
|
true
|
151
151
|
end
|
152
|
-
end
|
152
|
+
end
|
153
153
|
|
154
154
|
# {Unexpected} is a type of {Failure} when a field exists, but its value
|
155
155
|
# does not match expectations.
|
@@ -164,8 +164,8 @@ module Linearly
|
|
164
164
|
def missing?
|
165
165
|
false
|
166
166
|
end
|
167
|
-
end
|
168
|
-
end
|
167
|
+
end
|
168
|
+
end
|
169
169
|
|
170
170
|
# {Expectation} is a helper module to turn various types of expectations
|
171
171
|
# into {Proc}s.
|
@@ -185,6 +185,6 @@ module Linearly
|
|
185
185
|
expectation
|
186
186
|
end
|
187
187
|
module_function :to_proc
|
188
|
-
end
|
189
|
-
end
|
190
|
-
end
|
188
|
+
end
|
189
|
+
end
|
190
|
+
end
|
data/lib/linearly/version.rb
CHANGED
@@ -1,3 +1,3 @@
|
|
1
1
|
module Linearly
|
2
|
-
VERSION = '0.1.
|
3
|
-
end
|
2
|
+
VERSION = '0.1.1'.freeze
|
3
|
+
end
|
data/spec/dynamic_step.rb
CHANGED
@@ -16,14 +16,14 @@ module Linearly
|
|
16
16
|
|
17
17
|
it { expect(error.message).to eq message }
|
18
18
|
it { expect(error.failures).to eq failures }
|
19
|
-
end
|
19
|
+
end
|
20
20
|
|
21
21
|
describe BrokenContract::Outputs do
|
22
22
|
let(:message) { 'failed output expectations: [missing, unexpected]' }
|
23
23
|
|
24
24
|
it { expect(error.message).to eq message }
|
25
25
|
it { expect(error.failures).to eq failures }
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
data/spec/flow_spec.rb
CHANGED
@@ -25,18 +25,18 @@ module Linearly
|
|
25
25
|
it { expect(inputs.length).to eq 2 }
|
26
26
|
it { expect(inputs.fetch(:key)).to eq String }
|
27
27
|
it { expect(inputs.fetch(:other)).to eq Numeric }
|
28
|
-
end
|
28
|
+
end
|
29
29
|
|
30
30
|
describe '#outputs' do
|
31
31
|
let(:outputs) { flow.outputs }
|
32
32
|
|
33
33
|
it { expect(outputs.length).to eq 1 }
|
34
34
|
it { expect(outputs.fetch(:new_key)).to eq Symbol }
|
35
|
-
end
|
35
|
+
end
|
36
36
|
|
37
37
|
describe '#>>' do
|
38
38
|
it { expect(flow.>>(step1)).to be_a Flow }
|
39
|
-
end
|
39
|
+
end
|
40
40
|
|
41
41
|
describe '#call' do
|
42
42
|
let(:state) { Statefully::State.create(**args) }
|
@@ -53,15 +53,15 @@ module Linearly
|
|
53
53
|
|
54
54
|
it { expect(result).not_to be_successful }
|
55
55
|
it { expect(result.error).to be_a RuntimeError }
|
56
|
-
end
|
56
|
+
end
|
57
57
|
|
58
58
|
context 'with a step not returning State' do
|
59
59
|
let(:step1_proc) { ->(_) { 'surprise!' } }
|
60
60
|
|
61
61
|
it { expect(result).not_to be_successful }
|
62
62
|
it { expect(result.error).to be_a Errors::StateNotReturned }
|
63
|
-
end
|
64
|
-
end
|
63
|
+
end
|
64
|
+
end
|
65
65
|
|
66
66
|
context 'with missing initial state' do
|
67
67
|
let(:args) { { key: 'val' } }
|
@@ -69,7 +69,7 @@ module Linearly
|
|
69
69
|
it { expect(result).to be_failed }
|
70
70
|
it { expect(result.error).to be_a Errors::BrokenContract::Inputs }
|
71
71
|
it { expect(result.history.length).to eq 2 }
|
72
|
-
end
|
73
|
-
end
|
74
|
-
end
|
75
|
-
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module Linearly
|
4
|
+
describe ImplicitStep do
|
5
|
+
describe '.call' do
|
6
|
+
let(:state) { Statefully::State.create(number: 7) }
|
7
|
+
let(:result) { described_class.call(state) }
|
8
|
+
|
9
|
+
it { expect { result.resolve }.to raise_error NameError }
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
data/spec/runner_spec.rb
CHANGED
@@ -13,35 +13,35 @@ module Linearly
|
|
13
13
|
it { expect(result).to be_successful }
|
14
14
|
it { expect(result).not_to be_finished }
|
15
15
|
it { expect(result.key).to eq 'val' }
|
16
|
-
end
|
16
|
+
end
|
17
17
|
|
18
18
|
shared_examples 'returns_error' do |error_class|
|
19
19
|
it { expect(result).not_to be_successful }
|
20
20
|
it { expect(result.error).to be_a error_class }
|
21
|
-
end
|
21
|
+
end
|
22
22
|
|
23
23
|
context 'when input validation fails' do
|
24
24
|
let(:inputs) { { other: true } }
|
25
25
|
|
26
26
|
it_behaves_like 'returns_error', Errors::BrokenContract::Inputs
|
27
|
-
end
|
27
|
+
end
|
28
28
|
|
29
29
|
context 'when step fails' do
|
30
30
|
let(:behavior) { ->(state) { state.fail(RuntimeError.new('Boom!')) } }
|
31
31
|
|
32
32
|
it_behaves_like 'returns_error', RuntimeError
|
33
|
-
end
|
33
|
+
end
|
34
34
|
|
35
35
|
context 'when step finishes' do
|
36
36
|
let(:behavior) { ->(state) { state.finish } }
|
37
37
|
|
38
38
|
it { expect(result).to be_finished }
|
39
|
-
end
|
39
|
+
end
|
40
40
|
|
41
41
|
context 'when output validation fails' do
|
42
42
|
let(:outputs) { { other: true } }
|
43
43
|
|
44
44
|
it_behaves_like 'returns_error', Errors::BrokenContract::Outputs
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
data/spec/spec_helper.rb
CHANGED
data/spec/static_step.rb
CHANGED
data/spec/step/dynamic_spec.rb
CHANGED
@@ -7,23 +7,23 @@ module Linearly
|
|
7
7
|
|
8
8
|
describe '#inputs' do
|
9
9
|
it { expect { step.inputs }.to raise_error NotImplementedError }
|
10
|
-
end
|
10
|
+
end
|
11
11
|
|
12
12
|
describe '#outputs' do
|
13
|
-
it { expect
|
14
|
-
end
|
13
|
+
it { expect(step.outputs).to eq({}) }
|
14
|
+
end
|
15
15
|
|
16
16
|
describe '#call' do
|
17
17
|
let(:state) { Statefully::State.create }
|
18
18
|
|
19
19
|
it { expect { step.call(state) }.to raise_error NotImplementedError }
|
20
|
-
end
|
20
|
+
end
|
21
21
|
|
22
22
|
describe '#>>' do
|
23
23
|
let(:step) { DynamicStep::Valid.new }
|
24
24
|
|
25
25
|
it { expect(step.>>(step)).to be_a Flow }
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
data/spec/step/static_spec.rb
CHANGED
@@ -6,13 +6,13 @@ module Linearly
|
|
6
6
|
let(:state) { Statefully::State.create(**args) }
|
7
7
|
|
8
8
|
it { expect { described_class.inputs }.to raise_error NotImplementedError }
|
9
|
-
it { expect
|
9
|
+
it { expect(described_class.outputs).to eq({}) }
|
10
10
|
|
11
11
|
describe '.call' do
|
12
12
|
let(:result) { described_class.call(state) }
|
13
13
|
|
14
14
|
it { expect { result }.to raise_error NotImplementedError }
|
15
|
-
end
|
15
|
+
end
|
16
16
|
|
17
17
|
describe 'implementation' do
|
18
18
|
subject { StaticStep }
|
@@ -21,7 +21,7 @@ module Linearly
|
|
21
21
|
let(:flow) { subject.>>(subject) }
|
22
22
|
|
23
23
|
it { expect(flow).to be_a Flow }
|
24
|
-
end
|
24
|
+
end
|
25
25
|
|
26
26
|
describe '.call' do
|
27
27
|
let(:result) { subject.call(state) }
|
@@ -31,22 +31,22 @@ module Linearly
|
|
31
31
|
|
32
32
|
it { expect(result).not_to be_successful }
|
33
33
|
it { expect(result.error).to be_a NoMethodError }
|
34
|
-
end
|
34
|
+
end
|
35
35
|
|
36
36
|
context 'with correct input' do
|
37
37
|
let(:args) { { number: 7 } }
|
38
38
|
|
39
39
|
it { expect(result).to be_successful }
|
40
40
|
it { expect(result.string).to eq '8' }
|
41
|
-
end
|
41
|
+
end
|
42
42
|
|
43
43
|
context 'with incorrect input' do
|
44
44
|
let(:args) { { number: '7' } }
|
45
45
|
|
46
46
|
it { expect(result).not_to be_successful }
|
47
47
|
it { expect(result.error).to be_a TypeError }
|
48
|
-
end
|
49
|
-
end
|
50
|
-
end
|
51
|
-
end
|
52
|
-
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
data/spec/test_step.rb
CHANGED
data/spec/validation_spec.rb
CHANGED
@@ -8,7 +8,7 @@ module Linearly
|
|
8
8
|
shared_examples 'validation_fails' do |error_class|
|
9
9
|
it { expect(validation).to be_failed }
|
10
10
|
it { expect(validation.error).to be_a error_class }
|
11
|
-
end
|
11
|
+
end
|
12
12
|
|
13
13
|
shared_examples 'fails_when_missing_field' do |error_class|
|
14
14
|
let(:field) { :other }
|
@@ -22,8 +22,8 @@ module Linearly
|
|
22
22
|
|
23
23
|
it { expect(validation.error.failures).to have_key(field) }
|
24
24
|
it { expect(validation.error.failures.fetch(field)).to be_missing }
|
25
|
-
end
|
26
|
-
end
|
25
|
+
end
|
26
|
+
end
|
27
27
|
|
28
28
|
shared_examples 'fails_with_unexpected_value' do |error_class|
|
29
29
|
it_behaves_like 'validation_fails', error_class
|
@@ -35,13 +35,13 @@ module Linearly
|
|
35
35
|
|
36
36
|
it { expect(validation.error.failures).to have_key(field) }
|
37
37
|
it { expect(validation.error.failures.fetch(field)).not_to be_missing }
|
38
|
-
end
|
39
|
-
end
|
38
|
+
end
|
39
|
+
end
|
40
40
|
|
41
41
|
shared_examples 'succeeds_and_returns_state' do
|
42
42
|
it { expect(validation).to be_successful }
|
43
43
|
it { expect(validation).to eq state }
|
44
|
-
end
|
44
|
+
end
|
45
45
|
|
46
46
|
shared_examples 'supports_presence_expectation' do |error_class|
|
47
47
|
let(:field) { :key }
|
@@ -49,7 +49,7 @@ module Linearly
|
|
49
49
|
|
50
50
|
it_behaves_like 'fails_when_missing_field', error_class
|
51
51
|
it_behaves_like 'succeeds_and_returns_state'
|
52
|
-
end
|
52
|
+
end
|
53
53
|
|
54
54
|
shared_examples 'supports_class_expectation' do |error_class|
|
55
55
|
let(:field) { :key }
|
@@ -60,14 +60,14 @@ module Linearly
|
|
60
60
|
|
61
61
|
context 'when expectation is met (default)' do
|
62
62
|
it_behaves_like 'succeeds_and_returns_state'
|
63
|
-
end
|
63
|
+
end
|
64
64
|
|
65
65
|
context 'when expectation is not met' do
|
66
66
|
let(:klass) { Numeric }
|
67
67
|
|
68
68
|
it_behaves_like 'fails_with_unexpected_value', error_class
|
69
|
-
end
|
70
|
-
end
|
69
|
+
end
|
70
|
+
end
|
71
71
|
|
72
72
|
shared_examples 'supports_proc_expectation' do |error_class|
|
73
73
|
let(:field) { :key }
|
@@ -79,14 +79,14 @@ module Linearly
|
|
79
79
|
|
80
80
|
context 'when expectation is met (default)' do
|
81
81
|
it_behaves_like 'succeeds_and_returns_state'
|
82
|
-
end
|
82
|
+
end
|
83
83
|
|
84
84
|
context 'when expectation is not met' do
|
85
85
|
let(:expectation) { ->(val) { val.length == 4 } }
|
86
86
|
|
87
87
|
it_behaves_like 'fails_with_unexpected_value', error_class
|
88
|
-
end
|
89
|
-
end
|
88
|
+
end
|
89
|
+
end
|
90
90
|
|
91
91
|
describe Validation::Inputs do
|
92
92
|
error = Errors::BrokenContract::Inputs
|
@@ -94,7 +94,7 @@ module Linearly
|
|
94
94
|
it_behaves_like 'supports_presence_expectation', error
|
95
95
|
it_behaves_like 'supports_class_expectation', error
|
96
96
|
it_behaves_like 'supports_proc_expectation', error
|
97
|
-
end
|
97
|
+
end
|
98
98
|
|
99
99
|
describe Validation::Outputs do
|
100
100
|
error = Errors::BrokenContract::Outputs
|
@@ -102,6 +102,6 @@ module Linearly
|
|
102
102
|
it_behaves_like 'supports_presence_expectation', error
|
103
103
|
it_behaves_like 'supports_class_expectation', error
|
104
104
|
it_behaves_like 'supports_proc_expectation', error
|
105
|
-
end
|
106
|
-
end
|
107
|
-
end
|
105
|
+
end
|
106
|
+
end
|
107
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: linearly
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Marcin Wyszynski
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-11-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: statefully
|
@@ -28,238 +28,170 @@ dependencies:
|
|
28
28
|
name: bundler
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "~>"
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '1.14'
|
34
31
|
- - ">="
|
35
32
|
- !ruby/object:Gem::Version
|
36
|
-
version:
|
33
|
+
version: '0'
|
37
34
|
type: :development
|
38
35
|
prerelease: false
|
39
36
|
version_requirements: !ruby/object:Gem::Requirement
|
40
37
|
requirements:
|
41
|
-
- - "~>"
|
42
|
-
- !ruby/object:Gem::Version
|
43
|
-
version: '1.14'
|
44
38
|
- - ">="
|
45
39
|
- !ruby/object:Gem::Version
|
46
|
-
version:
|
47
|
-
- !ruby/object:Gem::Dependency
|
48
|
-
name: closing_comments
|
49
|
-
requirement: !ruby/object:Gem::Requirement
|
50
|
-
requirements:
|
51
|
-
- - "~>"
|
52
|
-
- !ruby/object:Gem::Version
|
53
|
-
version: '0.1'
|
54
|
-
- - ">="
|
55
|
-
- !ruby/object:Gem::Version
|
56
|
-
version: 0.1.1
|
57
|
-
type: :development
|
58
|
-
prerelease: false
|
59
|
-
version_requirements: !ruby/object:Gem::Requirement
|
60
|
-
requirements:
|
61
|
-
- - "~>"
|
62
|
-
- !ruby/object:Gem::Version
|
63
|
-
version: '0.1'
|
64
|
-
- - ">="
|
65
|
-
- !ruby/object:Gem::Version
|
66
|
-
version: 0.1.1
|
40
|
+
version: '0'
|
67
41
|
- !ruby/object:Gem::Dependency
|
68
42
|
name: codecov
|
69
43
|
requirement: !ruby/object:Gem::Requirement
|
70
44
|
requirements:
|
71
|
-
- - "~>"
|
72
|
-
- !ruby/object:Gem::Version
|
73
|
-
version: '0.1'
|
74
45
|
- - ">="
|
75
46
|
- !ruby/object:Gem::Version
|
76
|
-
version: 0
|
47
|
+
version: '0'
|
77
48
|
type: :development
|
78
49
|
prerelease: false
|
79
50
|
version_requirements: !ruby/object:Gem::Requirement
|
80
51
|
requirements:
|
81
|
-
- - "~>"
|
82
|
-
- !ruby/object:Gem::Version
|
83
|
-
version: '0.1'
|
84
52
|
- - ">="
|
85
53
|
- !ruby/object:Gem::Version
|
86
|
-
version: 0
|
54
|
+
version: '0'
|
87
55
|
- !ruby/object:Gem::Dependency
|
88
56
|
name: ensure_version_bump
|
89
57
|
requirement: !ruby/object:Gem::Requirement
|
90
58
|
requirements:
|
91
|
-
- - "
|
59
|
+
- - ">="
|
92
60
|
- !ruby/object:Gem::Version
|
93
|
-
version: '0
|
61
|
+
version: '0'
|
94
62
|
type: :development
|
95
63
|
prerelease: false
|
96
64
|
version_requirements: !ruby/object:Gem::Requirement
|
97
65
|
requirements:
|
98
|
-
- - "
|
66
|
+
- - ">="
|
99
67
|
- !ruby/object:Gem::Version
|
100
|
-
version: '0
|
68
|
+
version: '0'
|
101
69
|
- !ruby/object:Gem::Dependency
|
102
70
|
name: pry
|
103
71
|
requirement: !ruby/object:Gem::Requirement
|
104
72
|
requirements:
|
105
|
-
- - "~>"
|
106
|
-
- !ruby/object:Gem::Version
|
107
|
-
version: '0.10'
|
108
73
|
- - ">="
|
109
74
|
- !ruby/object:Gem::Version
|
110
|
-
version: 0
|
75
|
+
version: '0'
|
111
76
|
type: :development
|
112
77
|
prerelease: false
|
113
78
|
version_requirements: !ruby/object:Gem::Requirement
|
114
79
|
requirements:
|
115
|
-
- - "~>"
|
116
|
-
- !ruby/object:Gem::Version
|
117
|
-
version: '0.10'
|
118
80
|
- - ">="
|
119
81
|
- !ruby/object:Gem::Version
|
120
|
-
version: 0
|
82
|
+
version: '0'
|
121
83
|
- !ruby/object:Gem::Dependency
|
122
84
|
name: rake
|
123
85
|
requirement: !ruby/object:Gem::Requirement
|
124
86
|
requirements:
|
125
|
-
- - "
|
87
|
+
- - ">="
|
126
88
|
- !ruby/object:Gem::Version
|
127
|
-
version: '
|
89
|
+
version: '0'
|
128
90
|
type: :development
|
129
91
|
prerelease: false
|
130
92
|
version_requirements: !ruby/object:Gem::Requirement
|
131
93
|
requirements:
|
132
|
-
- - "
|
94
|
+
- - ">="
|
133
95
|
- !ruby/object:Gem::Version
|
134
|
-
version: '
|
96
|
+
version: '0'
|
135
97
|
- !ruby/object:Gem::Dependency
|
136
98
|
name: reek
|
137
99
|
requirement: !ruby/object:Gem::Requirement
|
138
100
|
requirements:
|
139
|
-
- - "~>"
|
140
|
-
- !ruby/object:Gem::Version
|
141
|
-
version: '4.6'
|
142
101
|
- - ">="
|
143
102
|
- !ruby/object:Gem::Version
|
144
|
-
version:
|
103
|
+
version: '0'
|
145
104
|
type: :development
|
146
105
|
prerelease: false
|
147
106
|
version_requirements: !ruby/object:Gem::Requirement
|
148
107
|
requirements:
|
149
|
-
- - "~>"
|
150
|
-
- !ruby/object:Gem::Version
|
151
|
-
version: '4.6'
|
152
108
|
- - ">="
|
153
109
|
- !ruby/object:Gem::Version
|
154
|
-
version:
|
110
|
+
version: '0'
|
155
111
|
- !ruby/object:Gem::Dependency
|
156
112
|
name: rspec
|
157
113
|
requirement: !ruby/object:Gem::Requirement
|
158
114
|
requirements:
|
159
|
-
- - "
|
115
|
+
- - ">="
|
160
116
|
- !ruby/object:Gem::Version
|
161
|
-
version: '
|
117
|
+
version: '0'
|
162
118
|
type: :development
|
163
119
|
prerelease: false
|
164
120
|
version_requirements: !ruby/object:Gem::Requirement
|
165
121
|
requirements:
|
166
|
-
- - "
|
122
|
+
- - ">="
|
167
123
|
- !ruby/object:Gem::Version
|
168
|
-
version: '
|
124
|
+
version: '0'
|
169
125
|
- !ruby/object:Gem::Dependency
|
170
126
|
name: rubocop
|
171
127
|
requirement: !ruby/object:Gem::Requirement
|
172
128
|
requirements:
|
173
|
-
- - "
|
129
|
+
- - ">="
|
174
130
|
- !ruby/object:Gem::Version
|
175
|
-
version: '0
|
131
|
+
version: '0'
|
176
132
|
type: :development
|
177
133
|
prerelease: false
|
178
134
|
version_requirements: !ruby/object:Gem::Requirement
|
179
135
|
requirements:
|
180
|
-
- - "
|
136
|
+
- - ">="
|
181
137
|
- !ruby/object:Gem::Version
|
182
|
-
version: '0
|
138
|
+
version: '0'
|
183
139
|
- !ruby/object:Gem::Dependency
|
184
140
|
name: rubocop-rspec
|
185
141
|
requirement: !ruby/object:Gem::Requirement
|
186
142
|
requirements:
|
187
|
-
- - "~>"
|
188
|
-
- !ruby/object:Gem::Version
|
189
|
-
version: '1.15'
|
190
143
|
- - ">="
|
191
144
|
- !ruby/object:Gem::Version
|
192
|
-
version:
|
145
|
+
version: '0'
|
193
146
|
type: :development
|
194
147
|
prerelease: false
|
195
148
|
version_requirements: !ruby/object:Gem::Requirement
|
196
149
|
requirements:
|
197
|
-
- - "~>"
|
198
|
-
- !ruby/object:Gem::Version
|
199
|
-
version: '1.15'
|
200
150
|
- - ">="
|
201
151
|
- !ruby/object:Gem::Version
|
202
|
-
version:
|
152
|
+
version: '0'
|
203
153
|
- !ruby/object:Gem::Dependency
|
204
154
|
name: simplecov
|
205
155
|
requirement: !ruby/object:Gem::Requirement
|
206
156
|
requirements:
|
207
|
-
- - "~>"
|
208
|
-
- !ruby/object:Gem::Version
|
209
|
-
version: '0.14'
|
210
157
|
- - ">="
|
211
158
|
- !ruby/object:Gem::Version
|
212
|
-
version: 0
|
159
|
+
version: '0'
|
213
160
|
type: :development
|
214
161
|
prerelease: false
|
215
162
|
version_requirements: !ruby/object:Gem::Requirement
|
216
163
|
requirements:
|
217
|
-
- - "~>"
|
218
|
-
- !ruby/object:Gem::Version
|
219
|
-
version: '0.14'
|
220
164
|
- - ">="
|
221
165
|
- !ruby/object:Gem::Version
|
222
|
-
version: 0
|
166
|
+
version: '0'
|
223
167
|
- !ruby/object:Gem::Dependency
|
224
168
|
name: yard
|
225
169
|
requirement: !ruby/object:Gem::Requirement
|
226
170
|
requirements:
|
227
|
-
- - "~>"
|
228
|
-
- !ruby/object:Gem::Version
|
229
|
-
version: '0.9'
|
230
171
|
- - ">="
|
231
172
|
- !ruby/object:Gem::Version
|
232
|
-
version: 0
|
173
|
+
version: '0'
|
233
174
|
type: :development
|
234
175
|
prerelease: false
|
235
176
|
version_requirements: !ruby/object:Gem::Requirement
|
236
177
|
requirements:
|
237
|
-
- - "~>"
|
238
|
-
- !ruby/object:Gem::Version
|
239
|
-
version: '0.9'
|
240
178
|
- - ">="
|
241
179
|
- !ruby/object:Gem::Version
|
242
|
-
version: 0
|
180
|
+
version: '0'
|
243
181
|
- !ruby/object:Gem::Dependency
|
244
182
|
name: yardstick
|
245
183
|
requirement: !ruby/object:Gem::Requirement
|
246
184
|
requirements:
|
247
|
-
- - "~>"
|
248
|
-
- !ruby/object:Gem::Version
|
249
|
-
version: '0.9'
|
250
185
|
- - ">="
|
251
186
|
- !ruby/object:Gem::Version
|
252
|
-
version: 0
|
187
|
+
version: '0'
|
253
188
|
type: :development
|
254
189
|
prerelease: false
|
255
190
|
version_requirements: !ruby/object:Gem::Requirement
|
256
191
|
requirements:
|
257
|
-
- - "~>"
|
258
|
-
- !ruby/object:Gem::Version
|
259
|
-
version: '0.9'
|
260
192
|
- - ">="
|
261
193
|
- !ruby/object:Gem::Version
|
262
|
-
version: 0
|
194
|
+
version: '0'
|
263
195
|
description:
|
264
196
|
email: marcinw [at] gmx.com
|
265
197
|
executables: []
|
@@ -281,6 +213,8 @@ files:
|
|
281
213
|
- spec/errors/broken_contract_spec.rb
|
282
214
|
- spec/errors/state_not_returned_spec.rb
|
283
215
|
- spec/flow_spec.rb
|
216
|
+
- spec/implicit_step.rb
|
217
|
+
- spec/implicit_step_spec.rb
|
284
218
|
- spec/runner_spec.rb
|
285
219
|
- spec/spec_helper.rb
|
286
220
|
- spec/static_step.rb
|
@@ -309,7 +243,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
309
243
|
version: '0'
|
310
244
|
requirements: []
|
311
245
|
rubyforge_project:
|
312
|
-
rubygems_version: 2.6.
|
246
|
+
rubygems_version: 2.6.13
|
313
247
|
signing_key:
|
314
248
|
specification_version: 4
|
315
249
|
summary: Linear workflow framework based on immutable state
|
@@ -318,6 +252,8 @@ test_files:
|
|
318
252
|
- spec/errors/broken_contract_spec.rb
|
319
253
|
- spec/errors/state_not_returned_spec.rb
|
320
254
|
- spec/flow_spec.rb
|
255
|
+
- spec/implicit_step.rb
|
256
|
+
- spec/implicit_step_spec.rb
|
321
257
|
- spec/runner_spec.rb
|
322
258
|
- spec/spec_helper.rb
|
323
259
|
- spec/static_step.rb
|