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 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