procedure 0.0.4 → 0.0.5

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
  SHA256:
3
- metadata.gz: bb3dadc4bdd769597dc4a1f4345a4e46ac4cf89f525e20e8695e6efa41ecaee6
4
- data.tar.gz: d46cd3e61fd9f89016efd0ac6fa1d477a01adb9437972d734f2a430867c9e739
3
+ metadata.gz: c458faddf925c1111b375c756b44a34174fdcfeed4d90211dd8adca6b7639e29
4
+ data.tar.gz: 0b84a6265afa0f2324e248d9614bb4aa0559bace68b61bac2cbe6f2052ddfe9b
5
5
  SHA512:
6
- metadata.gz: 20b9046fbbc06583c8f0a90aff56af8e203ef83d44c8056d0cc5b2d0346a23639743fa94e93481f73ed9d1e8db0ae72f7cd472b39a57437289264bbfc6b2d603
7
- data.tar.gz: 8557c6b88cace56978a649ed8231fe14c16c894556d67de9e05533f97fca70bf9a83de650ffb6b7626aa6ed4d2219bcb6bad4f32bbd2ab4ee699b71116febab6
6
+ metadata.gz: afca081ce6fba7a2bd748dbb25677df3b0dcf9268490c3c4533737101f1ef67e41b9415fbcac5448bd3f33e090a584bf98eeaf73f09688090c17adee76299235
7
+ data.tar.gz: 3173f16e423bb214772b79c1c138b896160717b5acfd4fce6ddde0c44a262ccf4a638bd23a36288db1c89d40576e44c3af28cdadc00ccaacf54a021d2c548e44
@@ -12,12 +12,13 @@ module Procedure
12
12
  @step_classes = step_classes
13
13
  end
14
14
 
15
- def call(context = {})
15
+ def call(context: {}, options: {})
16
+ base_options = { fail_fast: true }.merge(options)
16
17
  params = { execution_time: Time.now }.merge(context)
17
18
  fake_open_struct = Struct.new(*params.keys).new(*params.values)
18
19
 
19
20
  Procedure::Process.new(fake_open_struct, @step_classes).tap do |process|
20
- process.call
21
+ process.call(base_options[:fail_fast])
21
22
  end
22
23
  end
23
24
  end
@@ -2,7 +2,7 @@ module Procedure
2
2
  class Outcome
3
3
  def initialize(step_classes)
4
4
  @step_classes = step_classes
5
- @failed_step = nil
5
+ @failed_steps = []
6
6
  @passed_steps = []
7
7
  end
8
8
 
@@ -10,28 +10,28 @@ module Procedure
10
10
  if step.passed?
11
11
  @passed_steps << step
12
12
  else
13
- @failed_step = step
13
+ @failed_steps << step
14
14
  end
15
15
  end
16
16
 
17
- def failure_message
18
- return unless failure?
17
+ def failure_messages
18
+ return [] unless failure?
19
19
 
20
- @failed_step.failure_message
20
+ @failed_steps.map(&:failure_message)
21
21
  end
22
22
 
23
- def failure_code
24
- return unless failure?
23
+ def failure_codes
24
+ return [] unless failure?
25
25
 
26
- @failed_step.failure_code
26
+ @failed_steps.map(&:failure_code)
27
27
  end
28
28
 
29
29
  def failure?
30
- !@failed_step.nil?
30
+ @failed_steps.size.positive?
31
31
  end
32
32
 
33
33
  def positive?
34
- @failed_step.nil? && @step_classes.size == @passed_steps.size
34
+ @failed_steps.size.zero? && @step_classes.size == @passed_steps.size
35
35
  end
36
36
 
37
37
  def passed_steps
@@ -14,24 +14,24 @@ module Procedure
14
14
  !success?
15
15
  end
16
16
 
17
- def failure_message
18
- outcome.failure_message
17
+ def failure_messages
18
+ outcome.failure_messages
19
19
  end
20
20
 
21
- def failure_code
22
- outcome.failure_code
21
+ def failure_codes
22
+ outcome.failure_codes
23
23
  end
24
24
 
25
25
  def passed_steps
26
26
  outcome.passed_steps
27
27
  end
28
28
 
29
- def call
29
+ def call(fail_fast)
30
30
  @steps.each do |step_class|
31
31
  step = step_class.new(@context)
32
32
  outcome.add(step)
33
33
 
34
- break if outcome.failure?
34
+ break if outcome.failure? && fail_fast
35
35
  end
36
36
  end
37
37
 
@@ -6,7 +6,7 @@ module Procedure
6
6
  #
7
7
  # @return [String]
8
8
  def to_s
9
- "0.0.4"
9
+ "0.0.5"
10
10
  end
11
11
  end
12
12
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: procedure
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Paweł Dąbrowski
@@ -14,22 +14,36 @@ dependencies:
14
14
  name: rspec
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '3.7'
17
20
  - - ">="
18
21
  - !ruby/object:Gem::Version
19
22
  version: 3.7.0
23
+ type: :development
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
20
27
  - - "~>"
21
28
  - !ruby/object:Gem::Version
22
29
  version: '3.7'
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 3.7.0
33
+ - !ruby/object:Gem::Dependency
34
+ name: pry
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: '0'
23
40
  type: :development
24
41
  prerelease: false
25
42
  version_requirements: !ruby/object:Gem::Requirement
26
43
  requirements:
27
44
  - - ">="
28
45
  - !ruby/object:Gem::Version
29
- version: 3.7.0
30
- - - "~>"
31
- - !ruby/object:Gem::Version
32
- version: '3.7'
46
+ version: '0'
33
47
  description: Mariage of policy object and interactor patterns
34
48
  email: dziamber@gmail.com
35
49
  executables: []
@@ -61,7 +75,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
61
75
  - !ruby/object:Gem::Version
62
76
  version: '0'
63
77
  requirements: []
64
- rubygems_version: 3.0.8
78
+ rubygems_version: 3.2.11
65
79
  signing_key:
66
80
  specification_version: 4
67
81
  summary: Mariage of policy object and interactor patterns