steppy 0.8.0 → 1.0.0
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/.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: ''
|