procedure 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- 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: {}
|