burner 1.9.0 → 1.10.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/CHANGELOG.md +5 -0
- data/README.md +1 -0
- data/lib/burner/jobs.rb +1 -0
- data/lib/burner/library.rb +1 -0
- data/lib/burner/library/collection/only_keys.rb +61 -0
- data/lib/burner/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b775833cacea64e30e78943c176e3317e3f72510cb3653066a3ce16c70dc1f3d
|
4
|
+
data.tar.gz: 51da8ebaac4ea928c441898e9c7b46052efa9e5c95f454e6933e8a036093709b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9276607a43419b630a7804ce5c83b53844dc0a42abddfd218e4a3f9d62aaaf608c24d821a980f3c618d058de0fbb2fb3abb6b8d1195f165d5f773121727ca1b1
|
7
|
+
data.tar.gz: 3c6ff8a7428940aaff2bb1a46f1bb7dfb4ac077e700ffbae7b006de8e0458c0d55ff719b846fd4daad6f5aa62f8b826c6abd96e185ba7d6dc6f4799b60d59291
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -271,6 +271,7 @@ This library only ships with very basic, rudimentary jobs that are meant to just
|
|
271
271
|
* **b/collection/nested_aggregate** [register, key_mappings, key, separator]: Traverse a set of objects, resolving key's value for each object, optionally copying down key_mappings to the child records, then merging all the inner records together.
|
272
272
|
* **b/collection/number** [key, register, separator, start_at]: This job can iterate over a set of records and sequence them (set the specified key to a sequential index value.)
|
273
273
|
* **b/collection/objects_to_arrays** [mappings, register]: Convert an array of objects to an array of arrays.
|
274
|
+
* **b/collection/only_keys** [keys_register, register, separator]: Limit an array of objects' keys to a specified set of keys. These keys can be realized at run-time as they are pulled from another register (keys_register) thus making it dynamic.
|
274
275
|
* **b/collection/pivot** [unique_keys, insensitive, other_keys, pivot_key, pivot_value_key, register, separator]:
|
275
276
|
Take an array of objects and pivot a key into multiple keys. It essentially takes all the values for a key and creates N number of keys (one per value.) Under the hood it uses HashMath's [Record](https://github.com/bluemarblepayroll/hash_math#record-the-hash-prototype) and [Table](https://github.com/bluemarblepayroll/hash_math#table-the-double-hash-hash-of-hashes) classes.
|
276
277
|
* **b/collection/shift** [amount, register]: Remove the first N number of elements from an array.
|
data/lib/burner/jobs.rb
CHANGED
@@ -30,6 +30,7 @@ module Burner
|
|
30
30
|
register 'b/collection/nested_aggregate', Library::Collection::NestedAggregate
|
31
31
|
register 'b/collection/number', Library::Collection::Number
|
32
32
|
register 'b/collection/objects_to_arrays', Library::Collection::ObjectsToArrays
|
33
|
+
register 'b/collection/only_keys', Library::Collection::OnlyKeys
|
33
34
|
register 'b/collection/pivot', Library::Collection::Pivot
|
34
35
|
register 'b/collection/shift', Library::Collection::Shift
|
35
36
|
register 'b/collection/transform', Library::Collection::Transform
|
data/lib/burner/library.rb
CHANGED
@@ -21,6 +21,7 @@ require_relative 'library/collection/group'
|
|
21
21
|
require_relative 'library/collection/nested_aggregate'
|
22
22
|
require_relative 'library/collection/number'
|
23
23
|
require_relative 'library/collection/objects_to_arrays'
|
24
|
+
require_relative 'library/collection/only_keys'
|
24
25
|
require_relative 'library/collection/pivot'
|
25
26
|
require_relative 'library/collection/shift'
|
26
27
|
require_relative 'library/collection/transform'
|
@@ -0,0 +1,61 @@
|
|
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 Library
|
12
|
+
module Collection
|
13
|
+
# This job knows how to take an array of objects and limit it to a specific set of keys.
|
14
|
+
# The keys are pulled from another register which helps make it dynamic (you can load
|
15
|
+
# up this other register with a dynamic list of keys at run-time.)
|
16
|
+
#
|
17
|
+
# Expected Payload[register] input: array of objects.
|
18
|
+
# Payload[register] output: An array of objects.
|
19
|
+
class OnlyKeys < JobWithRegister
|
20
|
+
BLANK = ''
|
21
|
+
|
22
|
+
attr_reader :keys_register,
|
23
|
+
:resolver
|
24
|
+
|
25
|
+
def initialize(
|
26
|
+
keys_register:,
|
27
|
+
name: '',
|
28
|
+
register: DEFAULT_REGISTER,
|
29
|
+
separator: BLANK
|
30
|
+
)
|
31
|
+
super(name: name, register: register)
|
32
|
+
|
33
|
+
@keys_register = keys_register.to_s
|
34
|
+
@resolver = Objectable.resolver(separator: separator)
|
35
|
+
|
36
|
+
freeze
|
37
|
+
end
|
38
|
+
|
39
|
+
def perform(output, payload)
|
40
|
+
objects = array(payload[register])
|
41
|
+
count = objects.length
|
42
|
+
keys = array(payload[keys_register])
|
43
|
+
|
44
|
+
output.detail("Dynamically limiting #{count} object(s) with key(s): #{keys.join(', ')}")
|
45
|
+
|
46
|
+
payload[register] = objects.map { |object| transform(object, keys) }
|
47
|
+
end
|
48
|
+
|
49
|
+
private
|
50
|
+
|
51
|
+
def transform(object, keys)
|
52
|
+
keys.each_with_object({}) do |key, memo|
|
53
|
+
value = resolver.get(object, key)
|
54
|
+
|
55
|
+
resolver.set(memo, key, value)
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
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.
|
4
|
+
version: 1.10.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matthew Ruggio
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-05-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: acts_as_hashable
|
@@ -251,6 +251,7 @@ files:
|
|
251
251
|
- lib/burner/library/collection/nested_aggregate.rb
|
252
252
|
- lib/burner/library/collection/number.rb
|
253
253
|
- lib/burner/library/collection/objects_to_arrays.rb
|
254
|
+
- lib/burner/library/collection/only_keys.rb
|
254
255
|
- lib/burner/library/collection/pivot.rb
|
255
256
|
- lib/burner/library/collection/shift.rb
|
256
257
|
- lib/burner/library/collection/transform.rb
|