burner 1.0.0.pre.alpha.4 → 1.0.0.pre.alpha.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6e96a8d656466219851ff06ebced5aacac54fe0b6a78de2e1f0e5bf76480e1ca
4
- data.tar.gz: a4ba7e8d001f7e25ee7c404ed539089e51f295098d0062d14a3fcf473db64d7d
3
+ metadata.gz: 57b5b4290b72962e10ce7ea7244a1dcfb43894cff1d72ef4e0684de4cdea4a35
4
+ data.tar.gz: 2936c408e7ffa3e1e9883510d890329870d5c1a4c129fef1fb283103568c9508
5
5
  SHA512:
6
- metadata.gz: 1cc60f86ee2931902ab8e6870f5bda78f953e6740c2a5d76dc306c12457e93511646b9cbfe4db8fa583a3242bc1d361715011ea98ea5682045356a6c6f269808
7
- data.tar.gz: 5b9cf06f4426d1629f9c6672ee5c469052863e07bf01079b021494f5b6e0bc4ae0ef57be64e1a37d1652803039a1e11061c5415ca4a83f39672d4c55085feeac
6
+ metadata.gz: f514870aa2b12cc4fc34f3952cabf8c738985dac1a6602c7f41aec3f28b83738991d5cf82d429b62d76b0f3a96b85907e51d0e06db0ce33579d1dc74dc55409e
7
+ data.tar.gz: 2e9ee10f91bb28eb4d79091ae7106f6da640daaf6b5ac2f77e828e81743dfd55d6baca12a0e376c3be709483fe7a94e0f840f47ed2ecb5031233f4ff9ae7db3a
data/README.md CHANGED
@@ -239,6 +239,7 @@ This library only ships with very basic, rudimentary jobs that are meant to just
239
239
  * **collection/shift** [amount]: Remove the first N number of elements from an array.
240
240
  * **collection/transform** [attributes, exclusive, separator]: Iterate over all objects and transform each key per the attribute transformers specifications. If exclusive is set to false then the current object will be overridden/merged. Separator can also be set for key path support. This job uses (Realize)[https://github.com/bluemarblepayroll/realize], which provides its own extendable value-transformation pipeline.
241
241
  * **collection/unpivot** [pivot_set]: Take an array of objects and unpivot specific sets of keys into rows. Under the hood it uses [HashMath's Unpivot class](https://github.com/bluemarblepayroll/hash_math#unpivot-hash-key-coalescence-and-row-extrapolation).
242
+ * **collection/values** [include_keys]: Take an array of objects and call `#values` on each object. If include_keys is true (it is false by default), then call `#keys` on the first object and inject that as a "header" object.
242
243
 
243
244
  #### De-serialization
244
245
 
@@ -14,6 +14,7 @@ require_relative 'jobs/collection/objects_to_arrays'
14
14
  require_relative 'jobs/collection/shift'
15
15
  require_relative 'jobs/collection/transform'
16
16
  require_relative 'jobs/collection/unpivot'
17
+ require_relative 'jobs/collection/values'
17
18
  require_relative 'jobs/deserialize/csv'
18
19
  require_relative 'jobs/deserialize/json'
19
20
  require_relative 'jobs/deserialize/yaml'
@@ -41,6 +42,7 @@ module Burner
41
42
  register 'collection/shift', Collection::Shift
42
43
  register 'collection/transform', Collection::Transform
43
44
  register 'collection/unpivot', Collection::Unpivot
45
+ register 'collection/values', Collection::Values
44
46
  register 'deserialize/csv', Deserialize::Csv
45
47
  register 'deserialize/json', Deserialize::Json
46
48
  register 'deserialize/yaml', Deserialize::Yaml
@@ -0,0 +1,50 @@
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
+ class Jobs
12
+ module Collection
13
+ # Take an array of objects and call #values on each object.
14
+ # If include_keys is true (it is false by default), then call #keys on the first
15
+ # object and inject that as a "header" object.
16
+ # Expected Payload#value input: array of objects.
17
+ # Payload#value output: An array of arrays.
18
+ class Values < Job
19
+ attr_reader :include_keys
20
+
21
+ def initialize(name:, include_keys: false)
22
+ super(name: name)
23
+
24
+ @include_keys = include_keys || false
25
+
26
+ freeze
27
+ end
28
+
29
+ def perform(_output, payload)
30
+ keys = include_keys ? [keys(payload.value&.first)] : []
31
+ values = (payload.value || []).map { |object| values(object) }
32
+
33
+ payload.value = keys + values
34
+
35
+ nil
36
+ end
37
+
38
+ private
39
+
40
+ def keys(object)
41
+ object.respond_to?(:keys) ? object.keys : []
42
+ end
43
+
44
+ def values(object)
45
+ object.respond_to?(:values) ? object.values : []
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
@@ -8,5 +8,5 @@
8
8
  #
9
9
 
10
10
  module Burner
11
- VERSION = '1.0.0-alpha.4'
11
+ VERSION = '1.0.0-alpha.5'
12
12
  end
metadata CHANGED
@@ -1,7 +1,7 @@
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
4
+ version: 1.0.0.pre.alpha.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matthew Ruggio
@@ -229,6 +229,7 @@ files:
229
229
  - lib/burner/jobs/collection/transform/attribute.rb
230
230
  - lib/burner/jobs/collection/transform/attribute_renderer.rb
231
231
  - lib/burner/jobs/collection/unpivot.rb
232
+ - lib/burner/jobs/collection/values.rb
232
233
  - lib/burner/jobs/deserialize/csv.rb
233
234
  - lib/burner/jobs/deserialize/json.rb
234
235
  - lib/burner/jobs/deserialize/yaml.rb