burner 1.0.0.pre.alpha.6 → 1.0.0.pre.alpha.11
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +2 -0
- data/README.md +43 -39
- data/burner.gemspec +1 -1
- data/lib/burner/job.rb +15 -10
- data/lib/burner/job_with_register.rb +24 -0
- data/lib/burner/jobs.rb +27 -20
- data/lib/burner/library.rb +11 -5
- data/lib/burner/library/collection/arrays_to_objects.rb +14 -11
- data/lib/burner/library/collection/graph.rb +7 -9
- data/lib/burner/library/collection/objects_to_arrays.rb +34 -34
- data/lib/burner/library/collection/shift.rb +6 -8
- data/lib/burner/library/collection/transform.rb +7 -9
- data/lib/burner/library/collection/unpivot.rb +17 -11
- data/lib/burner/library/collection/validate.rb +90 -0
- data/lib/burner/library/collection/values.rb +9 -11
- data/lib/burner/library/deserialize/csv.rb +4 -6
- data/lib/burner/library/deserialize/json.rb +4 -6
- data/lib/burner/library/deserialize/yaml.rb +7 -7
- data/lib/burner/library/echo.rb +1 -3
- data/lib/burner/library/io/base.rb +3 -3
- data/lib/burner/library/io/exist.rb +9 -9
- data/lib/burner/library/io/read.rb +5 -7
- data/lib/burner/library/io/write.rb +5 -7
- data/lib/burner/library/{dummy.rb → nothing.rb} +3 -5
- data/lib/burner/library/serialize/csv.rb +5 -7
- data/lib/burner/library/serialize/json.rb +4 -6
- data/lib/burner/library/serialize/yaml.rb +4 -6
- data/lib/burner/library/set_value.rb +6 -8
- data/lib/burner/library/sleep.rb +1 -3
- data/lib/burner/modeling.rb +1 -0
- data/lib/burner/modeling/attribute.rb +3 -1
- data/lib/burner/modeling/validations.rb +23 -0
- data/lib/burner/modeling/validations/base.rb +35 -0
- data/lib/burner/modeling/validations/blank.rb +31 -0
- data/lib/burner/modeling/validations/present.rb +31 -0
- data/lib/burner/payload.rb +50 -10
- data/lib/burner/pipeline.rb +3 -3
- data/lib/burner/step.rb +1 -5
- data/lib/burner/util.rb +1 -0
- data/lib/burner/util/string_template.rb +42 -0
- data/lib/burner/version.rb +1 -1
- metadata +13 -6
- data/lib/burner/string_template.rb +0 -40
data/lib/burner/pipeline.rb
CHANGED
@@ -48,10 +48,10 @@ module Burner
|
|
48
48
|
|
49
49
|
time_in_seconds = Benchmark.measure do
|
50
50
|
steps.each do |step|
|
51
|
-
|
51
|
+
step.perform(output, payload)
|
52
52
|
|
53
|
-
if
|
54
|
-
output.detail('
|
53
|
+
if payload.halt_pipeline?
|
54
|
+
output.detail('Payload was halted, ending pipeline.')
|
55
55
|
break
|
56
56
|
end
|
57
57
|
end
|
data/lib/burner/step.rb
CHANGED
@@ -29,17 +29,13 @@ module Burner
|
|
29
29
|
end
|
30
30
|
|
31
31
|
def perform(output, payload)
|
32
|
-
return_value = nil
|
33
|
-
|
34
32
|
output.title("#{job.class.name}#{SEPARATOR}#{job.name}")
|
35
33
|
|
36
34
|
time_in_seconds = Benchmark.measure do
|
37
|
-
|
35
|
+
job.perform(output, payload)
|
38
36
|
end.real.round(3)
|
39
37
|
|
40
38
|
output.complete(time_in_seconds)
|
41
|
-
|
42
|
-
return_value
|
43
39
|
end
|
44
40
|
end
|
45
41
|
end
|
data/lib/burner/util.rb
CHANGED
@@ -0,0 +1,42 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
#
|
4
|
+
# Copyright (c) 2020-present, Blue Marble Payroll, LLC
|
5
|
+
#
|
6
|
+
# This source code is licensed under the MIT license found in the
|
7
|
+
# LICENSE file in the root directory of this source tree.
|
8
|
+
#
|
9
|
+
|
10
|
+
module Burner
|
11
|
+
module Util
|
12
|
+
# Can take in a string and an object and use the object for formatting string interpolations
|
13
|
+
# using tokens of form: {attribute_name}. This templating class does not understand nested
|
14
|
+
# structures, so input should be a flat object/hash in the form of key-value pairs.
|
15
|
+
# A benefit of using Objectable for resolution is that it can understand almost any type of
|
16
|
+
# object: Hash, Struct, OpenStruct, custom objects, etc.
|
17
|
+
# For more information see underlying libraries:
|
18
|
+
# * Stringento: https://github.com/bluemarblepayroll/stringento
|
19
|
+
# * Objectable: https://github.com/bluemarblepayroll/objectable
|
20
|
+
class StringTemplate
|
21
|
+
include Singleton
|
22
|
+
|
23
|
+
attr_reader :resolver
|
24
|
+
|
25
|
+
def initialize
|
26
|
+
@resolver = Objectable.resolver(separator: '')
|
27
|
+
|
28
|
+
freeze
|
29
|
+
end
|
30
|
+
|
31
|
+
# For general consumption
|
32
|
+
def evaluate(expression, input)
|
33
|
+
Stringento.evaluate(expression, input, resolver: self)
|
34
|
+
end
|
35
|
+
|
36
|
+
# For Stringento consumption
|
37
|
+
def resolve(value, input)
|
38
|
+
resolver.get(input, value)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
data/lib/burner/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: burner
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.0.pre.alpha.
|
4
|
+
version: 1.0.0.pre.alpha.11
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matthew Ruggio
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-10-
|
11
|
+
date: 2020-10-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: acts_as_hashable
|
@@ -192,8 +192,9 @@ dependencies:
|
|
192
192
|
- - "~>"
|
193
193
|
- !ruby/object:Gem::Version
|
194
194
|
version: 0.7.0
|
195
|
-
description: " This library serves as the
|
196
|
-
allows you to organize your code into
|
195
|
+
description: " This library serves as the backbone for a configurable processing
|
196
|
+
engine. It allows you to organize your code into jobs, then stitch those jobs together
|
197
|
+
as steps.\n"
|
197
198
|
email:
|
198
199
|
- mruggio@bluemarblepayroll.com
|
199
200
|
executables:
|
@@ -220,6 +221,7 @@ files:
|
|
220
221
|
- lib/burner.rb
|
221
222
|
- lib/burner/cli.rb
|
222
223
|
- lib/burner/job.rb
|
224
|
+
- lib/burner/job_with_register.rb
|
223
225
|
- lib/burner/jobs.rb
|
224
226
|
- lib/burner/library.rb
|
225
227
|
- lib/burner/library/collection/arrays_to_objects.rb
|
@@ -228,16 +230,17 @@ files:
|
|
228
230
|
- lib/burner/library/collection/shift.rb
|
229
231
|
- lib/burner/library/collection/transform.rb
|
230
232
|
- lib/burner/library/collection/unpivot.rb
|
233
|
+
- lib/burner/library/collection/validate.rb
|
231
234
|
- lib/burner/library/collection/values.rb
|
232
235
|
- lib/burner/library/deserialize/csv.rb
|
233
236
|
- lib/burner/library/deserialize/json.rb
|
234
237
|
- lib/burner/library/deserialize/yaml.rb
|
235
|
-
- lib/burner/library/dummy.rb
|
236
238
|
- lib/burner/library/echo.rb
|
237
239
|
- lib/burner/library/io/base.rb
|
238
240
|
- lib/burner/library/io/exist.rb
|
239
241
|
- lib/burner/library/io/read.rb
|
240
242
|
- lib/burner/library/io/write.rb
|
243
|
+
- lib/burner/library/nothing.rb
|
241
244
|
- lib/burner/library/serialize/csv.rb
|
242
245
|
- lib/burner/library/serialize/json.rb
|
243
246
|
- lib/burner/library/serialize/yaml.rb
|
@@ -247,15 +250,19 @@ files:
|
|
247
250
|
- lib/burner/modeling/attribute.rb
|
248
251
|
- lib/burner/modeling/attribute_renderer.rb
|
249
252
|
- lib/burner/modeling/key_index_mapping.rb
|
253
|
+
- lib/burner/modeling/validations.rb
|
254
|
+
- lib/burner/modeling/validations/base.rb
|
255
|
+
- lib/burner/modeling/validations/blank.rb
|
256
|
+
- lib/burner/modeling/validations/present.rb
|
250
257
|
- lib/burner/output.rb
|
251
258
|
- lib/burner/payload.rb
|
252
259
|
- lib/burner/pipeline.rb
|
253
260
|
- lib/burner/side_effects.rb
|
254
261
|
- lib/burner/side_effects/written_file.rb
|
255
262
|
- lib/burner/step.rb
|
256
|
-
- lib/burner/string_template.rb
|
257
263
|
- lib/burner/util.rb
|
258
264
|
- lib/burner/util/arrayable.rb
|
265
|
+
- lib/burner/util/string_template.rb
|
259
266
|
- lib/burner/version.rb
|
260
267
|
homepage: https://github.com/bluemarblepayroll/burner
|
261
268
|
licenses:
|
@@ -1,40 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
#
|
4
|
-
# Copyright (c) 2020-present, Blue Marble Payroll, LLC
|
5
|
-
#
|
6
|
-
# This source code is licensed under the MIT license found in the
|
7
|
-
# LICENSE file in the root directory of this source tree.
|
8
|
-
#
|
9
|
-
|
10
|
-
module Burner
|
11
|
-
# Can take in a string and an object and use the object for formatting string interpolations
|
12
|
-
# using tokens of form: {attribute_name}. This templating class does not understand nested
|
13
|
-
# structures, so input should be a flat object/hash in the form of key-value pairs. A benefit of
|
14
|
-
# using Objectable for resolution is that it can understand almost any type of
|
15
|
-
# object: Hash, Struct, OpenStruct, custom objects, etc.
|
16
|
-
# For more information see underlying libraries:
|
17
|
-
# * Stringento: https://github.com/bluemarblepayroll/stringento
|
18
|
-
# * Objectable: https://github.com/bluemarblepayroll/objectable
|
19
|
-
class StringTemplate
|
20
|
-
include Singleton
|
21
|
-
|
22
|
-
attr_reader :resolver
|
23
|
-
|
24
|
-
def initialize
|
25
|
-
@resolver = Objectable.resolver(separator: '')
|
26
|
-
|
27
|
-
freeze
|
28
|
-
end
|
29
|
-
|
30
|
-
# For general consumption
|
31
|
-
def evaluate(expression, input)
|
32
|
-
Stringento.evaluate(expression, input, resolver: self)
|
33
|
-
end
|
34
|
-
|
35
|
-
# For Stringento consumption
|
36
|
-
def resolve(value, input)
|
37
|
-
resolver.get(input, value)
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|