procedure 0.0.1 → 0.0.2

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: d0bfbc6ca15e1293fffeafc0cb7da4cef48d614f3ba6654ebae2e74870c57789
4
- data.tar.gz: cc359cbc4398a5afc5b8bbbb01ce506b8224ac5331f4618626998976402eb76f
3
+ metadata.gz: f4a926ece6841bbf56280c68e7d365fb6bf88f368539ffd711d6ddfd47eb1a53
4
+ data.tar.gz: 66fb2960f17d604f42d002364fbd8aa8706b13a9d077d537850986b940c181db
5
5
  SHA512:
6
- metadata.gz: a607fd7369424132da44a384de8ec1bf2f99216ae6ff5c33f4c1de12389fd9dff76c737349198fd1705c8b28ec0be0e351866534bd07bef6dc054d06c8a2591f
7
- data.tar.gz: d97693792528940ce27becfac78897e4885372a32eec545f4713e8a3450f315e0ff31a6f48ea1419fa55fcd4f83fdf47616f72aa2b9648b5ffadbc8dd5fc9ef5
6
+ metadata.gz: c0ba98b788fdf9d1688b923036dea84a35344a2d1bf1c53ca350e426fe1aa34d282170f471d1dc352854bfa57c64d0b604ab0a3335faea2c5487d31072f62321
7
+ data.tar.gz: 21dc888a795cfefbda391f94c4a5ac34c4715527a942e024be4e87edffe7abb77a0d1fe058f399c1ba9e04e8cd43ea2f35c56ad2a612aff6fc8bdd1f79859731
@@ -0,0 +1,4 @@
1
+ require 'procedure/outcome'
2
+ require 'procedure/process'
3
+ require 'procedure/step'
4
+ require 'procedure/organizer'
@@ -0,0 +1,28 @@
1
+ module Procedure
2
+ module Organizer
3
+ def self.included(target)
4
+ target.send(:include, InstanceMethods)
5
+ target.extend ClassMethods
6
+ end
7
+
8
+ module ClassMethods
9
+ attr_accessor :step_classes
10
+
11
+ def steps(*step_classes)
12
+ @step_classes = step_classes
13
+ end
14
+
15
+ def call(context = {})
16
+ params = { execution_time: Time.now }.merge(context)
17
+ fake_open_struct = Struct.new(*params.keys).new(*params.values)
18
+
19
+ Procedure::Process.new(fake_open_struct, @step_classes).tap do |process|
20
+ process.call
21
+ end
22
+ end
23
+ end
24
+
25
+ module InstanceMethods
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,41 @@
1
+ module Procedure
2
+ class Outcome
3
+ def initialize(step_classes)
4
+ @step_classes = step_classes
5
+ @failed_step = nil
6
+ @passed_steps = []
7
+ end
8
+
9
+ def add(step)
10
+ if step.passed?
11
+ @passed_steps << step
12
+ else
13
+ @failed_step = step
14
+ end
15
+ end
16
+
17
+ def failure_message
18
+ return unless failure?
19
+
20
+ @failed_step.failure_message
21
+ end
22
+
23
+ def failure_code
24
+ return unless failure?
25
+
26
+ @failed_step.failure_code
27
+ end
28
+
29
+ def failure?
30
+ !@failed_step.nil?
31
+ end
32
+
33
+ def positive?
34
+ @failed_step.nil? && @step_classes.size == @passed_steps.size
35
+ end
36
+
37
+ def passed_steps
38
+ @passed_steps.map { |step| step.class.name }
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,44 @@
1
+ module Procedure
2
+ class Process
3
+ def initialize(context, steps)
4
+ @context = context
5
+ @steps = steps
6
+ @passed = false
7
+ end
8
+
9
+ def success?
10
+ outcome.positive?
11
+ end
12
+
13
+ def failure?
14
+ !success?
15
+ end
16
+
17
+ def failure_message
18
+ outcome.failure_message
19
+ end
20
+
21
+ def failure_code
22
+ outcome.failure_code
23
+ end
24
+
25
+ def passed_steps
26
+ outcome.passed_steps
27
+ end
28
+
29
+ def call
30
+ @steps.each do |step_class|
31
+ step = step_class.new(@context)
32
+ outcome.add(step)
33
+
34
+ break if outcome.failure?
35
+ end
36
+ end
37
+
38
+ private
39
+
40
+ def outcome
41
+ @outcome ||= Procedure::Outcome.new(@steps)
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,23 @@
1
+ module Procedure
2
+ module Step
3
+ def self.included(target)
4
+ target.send(:include, InstanceMethods)
5
+ target.extend ClassMethods
6
+ end
7
+
8
+ module ClassMethods
9
+ end
10
+
11
+ module InstanceMethods
12
+ def initialize(context)
13
+ @context = context
14
+ end
15
+
16
+ def failure_message; end
17
+ def failure_code; end
18
+
19
+ private
20
+ attr_reader :context
21
+ end
22
+ end
23
+ end
@@ -6,7 +6,7 @@ module Procedure
6
6
  #
7
7
  # @return [String]
8
8
  def to_s
9
- "0.0.1"
9
+ "0.0.2"
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.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Paweł Dąbrowski
@@ -36,8 +36,13 @@ executables: []
36
36
  extensions: []
37
37
  extra_rdoc_files: []
38
38
  files:
39
+ - lib/procedure.rb
40
+ - lib/procedure/organizer.rb
41
+ - lib/procedure/outcome.rb
42
+ - lib/procedure/process.rb
43
+ - lib/procedure/step.rb
39
44
  - lib/procedure/version.rb
40
- homepage: http://github.com/rubyhero/procedure
45
+ homepage: http://github.com/pdabrowski6/procedure
41
46
  licenses:
42
47
  - MIT
43
48
  metadata: {}