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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: fc10e53512597eb8d3bde5968a4c2003afe7b31841aec4c5c7b92926afccce38
4
- data.tar.gz: 946b54a3bad8ab10b9d03e626d0a9ca09033206c9f8e7a32402bc29f4680deb5
3
+ metadata.gz: b775833cacea64e30e78943c176e3317e3f72510cb3653066a3ce16c70dc1f3d
4
+ data.tar.gz: 51da8ebaac4ea928c441898e9c7b46052efa9e5c95f454e6933e8a036093709b
5
5
  SHA512:
6
- metadata.gz: 5c79c9c45bc6541f3e18b521f79644cee6223b6000d749762f571a36e0f327fbf9892055b65f5bb5ced89bc4ce01c9fca42f2ededc2302da66436722222848d8
7
- data.tar.gz: 2f955e12724ff194802e532ffe6b12a475ac2aed7481a46b2a4e2a2fcfd2dec9f4fe8114b7dbd1a4b5a6745edfc4571ac7d72a441ff9b8505b5f145984ea4003
6
+ metadata.gz: 9276607a43419b630a7804ce5c83b53844dc0a42abddfd218e4a3f9d62aaaf608c24d821a980f3c618d058de0fbb2fb3abb6b8d1195f165d5f773121727ca1b1
7
+ data.tar.gz: 3c6ff8a7428940aaff2bb1a46f1bb7dfb4ac077e700ffbae7b006de8e0458c0d55ff719b846fd4daad6f5aa62f8b826c6abd96e185ba7d6dc6f4799b60d59291
data/CHANGELOG.md CHANGED
@@ -1,3 +1,8 @@
1
+ # 1.10.0 (May 17th, 2021)
2
+
3
+ Added Jobs:
4
+
5
+ * b/collection/only_keys
1
6
  # 1.9.0 (April 13th, 2021)
2
7
 
3
8
  Added Jobs:
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
@@ -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
@@ -8,5 +8,5 @@
8
8
  #
9
9
 
10
10
  module Burner
11
- VERSION = '1.9.0'
11
+ VERSION = '1.10.0'
12
12
  end
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.9.0
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-04-13 00:00:00.000000000 Z
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