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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: eac2749b4aad79a7f0a3720eb59024d1b1761747
4
- data.tar.gz: 920e5ac7f405ac7326d439a7815c18ce353b3795
3
+ metadata.gz: c9c772fe40a7e770ddaa6e198b2e727a50ab95fe
4
+ data.tar.gz: f47f4acec7c61e455e1c75964d09f58d04681666
5
5
  SHA512:
6
- metadata.gz: f9e00e9d2d3064c3cf2934c080a77c43643e2c4375ce92bb335c45895502ab938b3021f0285a9470be171195db4e8a7a916cbb3aa48309a40f2e27b5573c5538
7
- data.tar.gz: 622bde992eacf7a3c30bf2a0cfaae44fc0462e380b21038a4b56f24da010bb62e7b8d10033640cb1fd0b8d192b1d0783c2af18eb8b7e002f7d9c8c312f0fb06a
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 # class Inputs
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 # class Outputs
78
- end # class BrokenContract
79
- end # module Errors
80
- end # module Linearly
77
+ end
78
+ end
79
+ end
80
+ end
@@ -24,6 +24,6 @@ module Linearly
24
24
  super("#{value.class.name} is not a Statefully::State")
25
25
  @value = value
26
26
  end
27
- end # class StateNotReturned
28
- end # module Errors
29
- end # module Linearly
27
+ end
28
+ end
29
+ end
data/lib/linearly/flow.rb CHANGED
@@ -138,7 +138,7 @@ module Linearly
138
138
  end
139
139
  @outputs.merge!(step.outputs)
140
140
  end
141
- end # class Contract
141
+ end
142
142
  private_constant :Contract
143
- end # class Flow
144
- end # module Linearly
143
+ end
144
+ end
@@ -16,7 +16,7 @@ module Linearly
16
16
  def >>(other)
17
17
  Flow.new(self, other)
18
18
  end
19
- end # module FlowBuilder
20
- end # module Mixins
19
+ end
20
+ end
21
21
  private_constant :Mixins
22
- end # module Linearly
22
+ end
@@ -26,7 +26,7 @@ module Linearly
26
26
  current.fail(Errors::StateNotReturned.new(step))
27
27
  end
28
28
  end
29
- end # module Reducer
30
- end # module Mixins
29
+ end
30
+ end
31
31
  private_constant :Mixins
32
- end # module Linearly
32
+ end
@@ -33,6 +33,6 @@ module Linearly
33
33
  Validation::Outputs.new(step.outputs),
34
34
  ]
35
35
  end
36
- end # class Runner
36
+ end
37
37
  private_constant :Runner
38
- end # module Linearly
38
+ end
@@ -28,7 +28,7 @@ module Linearly
28
28
  # FindUser.new.outputs
29
29
  # => { user: User }
30
30
  def outputs
31
- raise NotImplementedError
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 # module Dynamic
49
- end # module Step
50
- end # module Linearly
48
+ end
49
+ end
50
+ end
@@ -33,7 +33,7 @@ module Linearly
33
33
  # def call
34
34
  # succeed(user: User.find(user_id))
35
35
  # end
36
- # end # class FindUser
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
- raise NotImplementedError
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 unknown messages to the wrapped +State+
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.send(name, *args, &block)
102
- rescue NoMethodError
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 # class Static
119
- end # module Step
120
- end # module Linearly
117
+ end
118
+ end
119
+ end
@@ -51,7 +51,7 @@ module Linearly
51
51
  def error_class
52
52
  Errors::BrokenContract::Inputs
53
53
  end
54
- end # class Inputs
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 # class Outputs
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 # class Validator
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 # class Missing
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 # class Unexpected
168
- end # class Failure
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 # module Expectation
189
- end # class Validation
190
- end # module Linearly
188
+ end
189
+ end
190
+ end
@@ -1,3 +1,3 @@
1
1
  module Linearly
2
- VERSION = '0.1.0'.freeze
3
- end # module Linearly
2
+ VERSION = '0.1.1'.freeze
3
+ end
data/spec/dynamic_step.rb CHANGED
@@ -10,6 +10,6 @@ module Linearly
10
10
  def outputs
11
11
  {}
12
12
  end
13
- end # class Valid
14
- end # class DynamicStep
15
- end # module Linearly
13
+ end
14
+ end
15
+ end
@@ -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 # describe BrokenContract::Inputs
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 # describe BrokenContract::Outputs
27
- end # describe BrokenContract
28
- end # module Errors
29
- end # module Linearly
26
+ end
27
+ end
28
+ end
29
+ end
@@ -8,6 +8,6 @@ module Linearly
8
8
 
9
9
  it { expect(error.message).to eq 'String is not a Statefully::State' }
10
10
  it { expect(error.value).to eq value }
11
- end # describe StateNotReturned
12
- end # module Errors
13
- end # module Linearly
11
+ end
12
+ end
13
+ 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 # describe '#inputs'
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 # describe '#outputs'
35
+ end
36
36
 
37
37
  describe '#>>' do
38
38
  it { expect(flow.>>(step1)).to be_a Flow }
39
- end # describe '#>>'
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 # context 'with a throwing step'
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 # context 'with a step not returning State'
64
- end # context 'with correct input'
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 # context 'with missing initial state'
73
- end # describe '#call'
74
- end # describe Flow
75
- end # module Linearly
72
+ end
73
+ end
74
+ end
75
+ end
@@ -0,0 +1,11 @@
1
+ module Linearly
2
+ class ImplicitStep < Step::Static
3
+ def self.inputs
4
+ {}
5
+ end
6
+
7
+ def call
8
+ succeed(string: (number + 1).to_s)
9
+ end
10
+ end
11
+ 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 # context 'when all goes well'
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 # shared_examples 'returns_error'
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 # context 'when input validation fails'
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 # context 'when step fails'
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 # context 'when step finishes'
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 # context 'when output validation fails'
46
- end # describe Runner
47
- end # module Linearly
45
+ end
46
+ end
47
+ end
data/spec/spec_helper.rb CHANGED
@@ -14,5 +14,6 @@ end
14
14
  require 'linearly'
15
15
 
16
16
  require 'dynamic_step'
17
+ require 'implicit_step'
17
18
  require 'static_step'
18
19
  require 'test_step'
data/spec/static_step.rb CHANGED
@@ -11,5 +11,5 @@ module Linearly
11
11
  def call
12
12
  succeed(string: (number + 1).to_s)
13
13
  end
14
- end # class StaticStep
15
- end # module Linearly
14
+ end
15
+ end
@@ -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 # describe '#inputs'
10
+ end
11
11
 
12
12
  describe '#outputs' do
13
- it { expect { step.outputs }.to raise_error NotImplementedError }
14
- end # describe '#outputs'
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 # describe '#call'
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 # describe '#>>'
27
- end # describe Dynamic
28
- end # module Step
29
- end # module Linearly
26
+ end
27
+ end
28
+ end
29
+ end
@@ -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 { described_class.outputs }.to raise_error NotImplementedError }
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 # describe '.call'
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 # describe '.>>'
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 # context 'with missing input'
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 # context 'with correct input'
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 # context 'with incorrect input'
49
- end # describe '.call'
50
- end # describe 'implementation'
51
- end # describe Step::Static
52
- end # module Linearly
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end
data/spec/test_step.rb CHANGED
@@ -12,5 +12,5 @@ module Linearly
12
12
  @outputs = outputs
13
13
  @behavior = behavior
14
14
  end
15
- end # class TestStep
16
- end # module Linearly
15
+ end
16
+ end
@@ -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 # shared_examples 'validation_fails'
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 # context 'with failures'
26
- end # shared_examples 'fails_when_missing_field'
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 # context 'with failures'
39
- end # shared_examples 'fails_with_unexpected_value'
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 # shared_examples 'succeeds_and_returns_state'
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 # shared_examples 'supports_presence_expectation'
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 # context 'when expectation is met (default)'
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 # context 'when expectation is not met'
70
- end # shared_examples 'supports_class_expectation'
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 # context 'when expectation is met (default)'
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 # context 'when expectation is not met'
89
- end # shared_examples 'supports_proc_expectation'
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 # describe Validation::Inputs
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 # describe Validation::Outputs
106
- end # describe Validation
107
- end # module Linearly
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.0
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-05-29 00:00:00.000000000 Z
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: 1.14.6
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: 1.14.6
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.1.10
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.1.10
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.1'
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.1'
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.10.4
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.10.4
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: '12.0'
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: '12.0'
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: 4.6.2
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: 4.6.2
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: '3.6'
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: '3.6'
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.49'
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.49'
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: 1.15.1
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: 1.15.1
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.14.1
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.14.1
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.9.9
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.9.9
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.9.9
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.9.9
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.12
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