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 +4 -4
- data/lib/procedure.rb +4 -0
- data/lib/procedure/organizer.rb +28 -0
- data/lib/procedure/outcome.rb +41 -0
- data/lib/procedure/process.rb +44 -0
- data/lib/procedure/step.rb +23 -0
- data/lib/procedure/version.rb +1 -1
- metadata +7 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f4a926ece6841bbf56280c68e7d365fb6bf88f368539ffd711d6ddfd47eb1a53
|
4
|
+
data.tar.gz: 66fb2960f17d604f42d002364fbd8aa8706b13a9d077d537850986b940c181db
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c0ba98b788fdf9d1688b923036dea84a35344a2d1bf1c53ca350e426fe1aa34d282170f471d1dc352854bfa57c64d0b604ab0a3335faea2c5487d31072f62321
|
7
|
+
data.tar.gz: 21dc888a795cfefbda391f94c4a5ac34c4715527a942e024be4e87edffe7abb77a0d1fe058f399c1ba9e04e8cd43ea2f35c56ad2a612aff6fc8bdd1f79859731
|
data/lib/procedure.rb
ADDED
@@ -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
|
data/lib/procedure/version.rb
CHANGED
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
|
+
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/
|
45
|
+
homepage: http://github.com/pdabrowski6/procedure
|
41
46
|
licenses:
|
42
47
|
- MIT
|
43
48
|
metadata: {}
|