burner 1.9.0 → 1.10.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|