steppy 0.8.0 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/.rubocop.yml +10 -3
- data/.rubocop_airbnb.yml +1 -0
- data/Gemfile +1 -1
- data/Gemfile.lock +12 -2
- data/Rakefile +1 -1
- data/lib/steppy.rb +85 -27
- data/lib/steppy/error.rb +1 -2
- data/lib/steppy/version.rb +1 -1
- data/steppy.gemspec +14 -12
- metadata +37 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 30867b1459b5e8f622fab73e25889a6fe09d208be7ffbf7cb5690ca084db7663
|
4
|
+
data.tar.gz: 7be40ff6c8e140c27249ab0722b90ddcab93ab5a01a12665f00ea6caddcd6293
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b081ebbfd0946d7a7ad50f98c52f81009cf26d8deeaf472ac41e2d96c36b8fc3bf98467d9be740bd8dac11389f512e77555e5450d6f45b3a3b2c713bba37d1e5
|
7
|
+
data.tar.gz: f7bd1e7b9fedd99b7067da79bb7c0303581bbc7623874f42ce5462a3cb8e25303abdf4f66a6c012053a88cd00670ed502e5f3fb403db6219ba8c93034245b5be
|
data/.gitignore
CHANGED
data/.rubocop.yml
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
---
|
1
2
|
inherit_from:
|
2
3
|
- .rubocop_airbnb.yml
|
3
4
|
|
@@ -11,9 +12,6 @@ Style/FrozenStringLiteralComment:
|
|
11
12
|
SupportedStyles:
|
12
13
|
- always
|
13
14
|
|
14
|
-
Style/StringLiterals:
|
15
|
-
Enabled: true
|
16
|
-
|
17
15
|
AllCops:
|
18
16
|
TargetRubyVersion: 2.5
|
19
17
|
|
@@ -23,5 +21,14 @@ Airbnb/ClassOrModuleDeclaredInWrongFile:
|
|
23
21
|
Airbnb/ModuleMethodInWrongFile:
|
24
22
|
Enabled: false
|
25
23
|
|
24
|
+
Airbnb/OptArgParameters:
|
25
|
+
Enabled: false
|
26
|
+
|
26
27
|
Lint/EndAlignment:
|
27
28
|
EnforcedStyleAlignWith: variable
|
29
|
+
|
30
|
+
Style/StringLiterals:
|
31
|
+
EnforcedStyle: single_quotes
|
32
|
+
SupportedStyles:
|
33
|
+
- single_quotes
|
34
|
+
- double_quotes
|
data/.rubocop_airbnb.yml
CHANGED
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,12 +1,13 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
steppy (0.
|
4
|
+
steppy (1.0.0)
|
5
5
|
|
6
6
|
GEM
|
7
7
|
remote: https://rubygems.org/
|
8
8
|
specs:
|
9
9
|
ast (2.4.0)
|
10
|
+
awesome_print (1.8.0)
|
10
11
|
axiom-types (0.1.1)
|
11
12
|
descendants_tracker (~> 0.0.4)
|
12
13
|
ice_nine (~> 0.11.0)
|
@@ -14,6 +15,7 @@ GEM
|
|
14
15
|
byebug (10.0.2)
|
15
16
|
codeclimate-engine-rb (0.4.1)
|
16
17
|
virtus (~> 1.0)
|
18
|
+
coderay (1.1.2)
|
17
19
|
coercible (1.0.0)
|
18
20
|
descendants_tracker (~> 0.0.1)
|
19
21
|
descendants_tracker (0.0.4)
|
@@ -22,11 +24,15 @@ GEM
|
|
22
24
|
equalizer (0.0.11)
|
23
25
|
ice_nine (0.11.2)
|
24
26
|
json (2.1.0)
|
27
|
+
method_source (0.9.2)
|
25
28
|
minitest (5.11.3)
|
26
29
|
parallel (1.12.1)
|
27
30
|
parser (2.5.1.2)
|
28
31
|
ast (~> 2.4.0)
|
29
32
|
powerpack (0.1.2)
|
33
|
+
pry (0.12.2)
|
34
|
+
coderay (~> 1.1.0)
|
35
|
+
method_source (~> 0.9.0)
|
30
36
|
rainbow (3.0.0)
|
31
37
|
rake (10.5.0)
|
32
38
|
reek (4.8.2)
|
@@ -51,6 +57,8 @@ GEM
|
|
51
57
|
json (>= 1.8, < 3)
|
52
58
|
simplecov-html (~> 0.10.0)
|
53
59
|
simplecov-html (0.10.2)
|
60
|
+
super_awesome_print (0.2.5)
|
61
|
+
awesome_print
|
54
62
|
thread_safe (0.3.6)
|
55
63
|
unicode-display_width (1.4.0)
|
56
64
|
virtus (1.0.5)
|
@@ -66,12 +74,14 @@ DEPENDENCIES
|
|
66
74
|
bundler (~> 1.16)
|
67
75
|
byebug
|
68
76
|
minitest (~> 5.1)
|
77
|
+
pry
|
69
78
|
rake (~> 10.0)
|
70
79
|
reek (~> 4.8.1)
|
71
80
|
rubocop (~> 0.52.1)
|
72
81
|
rubocop-airbnb
|
73
82
|
simplecov (~> 0.16.1)
|
74
83
|
steppy!
|
84
|
+
super_awesome_print
|
75
85
|
|
76
86
|
BUNDLED WITH
|
77
|
-
1.
|
87
|
+
1.17.2
|
data/Rakefile
CHANGED
data/lib/steppy.rb
CHANGED
@@ -12,14 +12,10 @@ module Steppy
|
|
12
12
|
end
|
13
13
|
|
14
14
|
# :reek:TooManyStatements
|
15
|
-
def self.parse_step(method:, args:, block:)
|
16
|
-
if args.key?(:if)
|
17
|
-
args[:condition] = args.delete(:if)
|
18
|
-
end
|
15
|
+
def self.parse_step(method:, args:, block: nil)
|
16
|
+
args[:condition] = -> { steppy_run_condition(args[:if]) } if args.key?(:if)
|
19
17
|
|
20
|
-
if args.key?(:unless)
|
21
|
-
args[:condition] = -> { !steppy_run_condition(args.delete(:unless)) }
|
22
|
-
end
|
18
|
+
args[:condition] = -> { !steppy_run_condition(args[:unless]) } if args.key?(:unless)
|
23
19
|
|
24
20
|
args[:prefix] = :step unless args.key?(:prefix)
|
25
21
|
|
@@ -41,31 +37,84 @@ module Steppy
|
|
41
37
|
steppy_cache[:sets] += sets
|
42
38
|
end
|
43
39
|
|
44
|
-
def step(method = nil, args = {}, &block)
|
45
|
-
|
46
|
-
Steppy.parse_step(
|
40
|
+
def step(method = nil, args = {}, &block)
|
41
|
+
steps.push(
|
42
|
+
Steppy.parse_step(method: method, args: args, block: block)
|
47
43
|
)
|
48
44
|
self
|
49
45
|
end
|
46
|
+
|
50
47
|
alias step_return step
|
51
48
|
|
52
49
|
def step_if(condition, &block)
|
53
|
-
|
50
|
+
steps.push(condition: condition, block: block)
|
54
51
|
self
|
55
52
|
end
|
56
53
|
|
57
54
|
def step_unless(condition, &block)
|
58
|
-
|
55
|
+
steps.push(condition: -> { !steppy_run_condition(condition) }, block: block)
|
59
56
|
self
|
60
57
|
end
|
61
58
|
|
62
|
-
def step_rescue(exceptions = nil, &block)
|
59
|
+
def step_rescue(exceptions = nil, &block)
|
63
60
|
steppy_cache[:rescues].push(exceptions: exceptions, block: block)
|
64
61
|
self
|
65
62
|
end
|
66
63
|
|
64
|
+
def step_if_else(condition_block, step_steps, args = {})
|
65
|
+
if_step, else_step = step_steps
|
66
|
+
|
67
|
+
steps.push Steppy.parse_step(
|
68
|
+
method: if_step,
|
69
|
+
args: {
|
70
|
+
if: condition_block,
|
71
|
+
}.merge(args)
|
72
|
+
)
|
73
|
+
|
74
|
+
steps.push Steppy.parse_step(
|
75
|
+
method: else_step,
|
76
|
+
args: {
|
77
|
+
unless: condition_block,
|
78
|
+
}.merge(args)
|
79
|
+
)
|
80
|
+
end
|
81
|
+
|
82
|
+
def step_after(key = nil, &block)
|
83
|
+
step_add_callback(:after, block, key)
|
84
|
+
end
|
85
|
+
|
86
|
+
def step_before(key = nil, &block)
|
87
|
+
step_add_callback(:before, block, key)
|
88
|
+
end
|
89
|
+
|
90
|
+
def step_add_callback(type, block, key)
|
91
|
+
callback_key = key ? key.to_sym : :global
|
92
|
+
callbacks = step_callbacks[type][callback_key] ||= []
|
93
|
+
callbacks.push(block)
|
94
|
+
end
|
95
|
+
|
96
|
+
def steps
|
97
|
+
steppy_cache[:steps]
|
98
|
+
end
|
99
|
+
|
100
|
+
def step_callbacks
|
101
|
+
steppy_cache[:callbacks]
|
102
|
+
end
|
103
|
+
|
67
104
|
def steppy_cache
|
68
|
-
@steppy_cache ||= SteppyCache.new(
|
105
|
+
@steppy_cache ||= SteppyCache.new(
|
106
|
+
steps: [],
|
107
|
+
sets: [],
|
108
|
+
rescues: [],
|
109
|
+
callbacks: {
|
110
|
+
before: {
|
111
|
+
global: [],
|
112
|
+
},
|
113
|
+
after: {
|
114
|
+
global: [],
|
115
|
+
},
|
116
|
+
}
|
117
|
+
)
|
69
118
|
end
|
70
119
|
end
|
71
120
|
|
@@ -73,7 +122,7 @@ module Steppy
|
|
73
122
|
module InstanceMethods
|
74
123
|
attr_reader :steppy_cache
|
75
124
|
|
76
|
-
def steppy(attributes, cache = {})
|
125
|
+
def steppy(attributes = {}, cache = {})
|
77
126
|
steppy_initialize_cache({ attributes: attributes, prefix: :step }.merge(cache))
|
78
127
|
|
79
128
|
if steppy_cache.key?(:block)
|
@@ -81,7 +130,7 @@ module Steppy
|
|
81
130
|
else
|
82
131
|
steppy_run(steppy_cache)
|
83
132
|
end
|
84
|
-
rescue => exception
|
133
|
+
rescue StandardError => exception
|
85
134
|
steppy_rescue exception, steppy_cache[:rescues]
|
86
135
|
end
|
87
136
|
|
@@ -89,9 +138,10 @@ module Steppy
|
|
89
138
|
steppy_sets(sets)
|
90
139
|
end
|
91
140
|
|
92
|
-
def step(method = nil, args = {}, &block)
|
93
|
-
steppy_run_step Steppy.parse_step(
|
141
|
+
def step(method = nil, args = {}, &block)
|
142
|
+
steppy_run_step Steppy.parse_step(method: method, args: args, block: block)
|
94
143
|
end
|
144
|
+
|
95
145
|
alias step_return step
|
96
146
|
|
97
147
|
def step_if(condition, &block)
|
@@ -137,10 +187,9 @@ module Steppy
|
|
137
187
|
|
138
188
|
def steppy_rescue(exception, rescues)
|
139
189
|
exception_class = exception.class
|
190
|
+
has_exception = exception_class == SteppyError || rescues.empty?
|
140
191
|
|
141
|
-
|
142
|
-
raise exception
|
143
|
-
end
|
192
|
+
raise exception if has_exception
|
144
193
|
|
145
194
|
rescues.each do |exceptions:, block:|
|
146
195
|
if !exceptions || (exceptions && !exceptions.include?(exception_class))
|
@@ -152,9 +201,7 @@ module Steppy
|
|
152
201
|
end
|
153
202
|
|
154
203
|
def steppy_run_condition_block(condition, block)
|
155
|
-
if steppy_run_condition(condition)
|
156
|
-
steppy_run(steppy_cache_from_block(block))
|
157
|
-
end
|
204
|
+
steppy_run(steppy_cache_from_block(block)) if steppy_run_condition(condition)
|
158
205
|
end
|
159
206
|
|
160
207
|
def steppy_run_condition(condition)
|
@@ -168,23 +215,34 @@ module Steppy
|
|
168
215
|
end
|
169
216
|
|
170
217
|
def steppy_run_step(method:, args:, block:)
|
171
|
-
if !steppy_run_condition(args[:condition]) || (
|
172
|
-
steppy_cache[:prefix] != args[:prefix]
|
173
|
-
)
|
218
|
+
if !steppy_run_condition(args[:condition]) || (steppy_cache[:prefix] != args[:prefix])
|
174
219
|
return steppy_result
|
175
220
|
end
|
176
221
|
|
222
|
+
step_callbacks(:before, method, args, args)
|
223
|
+
|
177
224
|
result = if block
|
178
225
|
instance_exec(steppy_attributes, &block)
|
179
226
|
else
|
180
227
|
steppy_run_method(method, steppy_attributes)
|
181
228
|
end
|
182
229
|
|
230
|
+
step_callbacks(:after, method, result, args)
|
231
|
+
|
183
232
|
steppy_set(args[:set], result)
|
184
233
|
|
185
234
|
result
|
186
235
|
end
|
187
236
|
|
237
|
+
def step_callbacks(type, method, result, args)
|
238
|
+
callbacks = steppy_cache[:callbacks][type]
|
239
|
+
method_callbacks = (callbacks[method] || [])
|
240
|
+
|
241
|
+
callbacks[:global].concat(method_callbacks).each do |callback|
|
242
|
+
instance_exec(result, args, &callback)
|
243
|
+
end
|
244
|
+
end
|
245
|
+
|
188
246
|
def steppy_run_method(method_name, attributes)
|
189
247
|
method = "#{steppy_cache[:prefix]}_#{method_name}"
|
190
248
|
|
data/lib/steppy/error.rb
CHANGED
@@ -3,9 +3,8 @@
|
|
3
3
|
# Incase you need to throw an error related to steppy
|
4
4
|
class SteppyError < StandardError
|
5
5
|
attr_reader :steppy
|
6
|
-
|
6
|
+
|
7
7
|
def initialize(steppy = nil)
|
8
|
-
# rubocop:enable Airbnb/OptArgParameters
|
9
8
|
if steppy
|
10
9
|
@steppy = steppy
|
11
10
|
message = steppy.is_a?(String) ? steppy : steppy.to_json
|
data/lib/steppy/version.rb
CHANGED
data/steppy.gemspec
CHANGED
@@ -5,28 +5,30 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
5
5
|
require 'steppy/version'
|
6
6
|
|
7
7
|
Gem::Specification.new do |spec|
|
8
|
-
spec.name
|
9
|
-
spec.version
|
10
|
-
spec.authors
|
11
|
-
spec.email
|
8
|
+
spec.name = 'steppy'
|
9
|
+
spec.version = Steppy::VERSION
|
10
|
+
spec.authors = ['cj']
|
11
|
+
spec.email = ['cjlazell@gmail.com']
|
12
12
|
|
13
|
-
spec.summary
|
14
|
-
spec.description
|
15
|
-
spec.homepage
|
16
|
-
spec.license
|
13
|
+
spec.summary = ''
|
14
|
+
spec.description = ''
|
15
|
+
spec.homepage = 'https://github.com/cj/steppy'
|
16
|
+
spec.license = 'MIT'
|
17
17
|
|
18
|
-
spec.files
|
18
|
+
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
19
19
|
f.match(%r{^(test|spec|features)/})
|
20
20
|
end
|
21
|
-
spec.bindir
|
22
|
-
spec.executables
|
21
|
+
spec.bindir = 'exe'
|
22
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
23
23
|
spec.require_paths = ['lib']
|
24
24
|
|
25
25
|
spec.add_development_dependency 'bundler', '~> 1.16'
|
26
|
-
spec.add_development_dependency 'rake', '~> 10.0'
|
27
26
|
spec.add_development_dependency 'minitest', '~> 5.1'
|
27
|
+
spec.add_development_dependency 'pry'
|
28
|
+
spec.add_development_dependency 'rake', '~> 10.0'
|
28
29
|
spec.add_development_dependency 'reek', '~> 4.8.1'
|
29
30
|
spec.add_development_dependency 'rubocop', '~> 0.52.1'
|
30
31
|
spec.add_development_dependency 'rubocop-airbnb'
|
31
32
|
spec.add_development_dependency 'simplecov', '~> 0.16.1'
|
33
|
+
spec.add_development_dependency 'super_awesome_print'
|
32
34
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: steppy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- cj
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-02-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -25,33 +25,47 @@ dependencies:
|
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '1.16'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: minitest
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '5.1'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '5.1'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: pry
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rake
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
44
58
|
requirements:
|
45
59
|
- - "~>"
|
46
60
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
61
|
+
version: '10.0'
|
48
62
|
type: :development
|
49
63
|
prerelease: false
|
50
64
|
version_requirements: !ruby/object:Gem::Requirement
|
51
65
|
requirements:
|
52
66
|
- - "~>"
|
53
67
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
68
|
+
version: '10.0'
|
55
69
|
- !ruby/object:Gem::Dependency
|
56
70
|
name: reek
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -108,6 +122,20 @@ dependencies:
|
|
108
122
|
- - "~>"
|
109
123
|
- !ruby/object:Gem::Version
|
110
124
|
version: 0.16.1
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: super_awesome_print
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - ">="
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - ">="
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
111
139
|
description: ''
|
112
140
|
email:
|
113
141
|
- cjlazell@gmail.com
|
@@ -153,7 +181,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
153
181
|
version: '0'
|
154
182
|
requirements: []
|
155
183
|
rubyforge_project:
|
156
|
-
rubygems_version: 2.7.
|
184
|
+
rubygems_version: 2.7.6.2
|
157
185
|
signing_key:
|
158
186
|
specification_version: 4
|
159
187
|
summary: ''
|