Class: Burner::Library::Collection::Transform
- Inherits:
-
JobWithRegister
- Object
- Job
- JobWithRegister
- Burner::Library::Collection::Transform
- Defined in:
- lib/burner/library/collection/transform.rb
Overview
Iterate over all objects and return a new set of transformed objects. The object is transformed per the “transformers” attribute for its attributes. An attribute defines the ultimate key to place the value in and then the transformer pipeline to use to derive the value. Under the hood this uses the Realize library:
https://github.com/bluemarblepayroll/realize
For more information on the specific contract for attributes, see the Burner::Modeling::Attribute class.
Expected Payload input: array of objects. Payload output: An array of objects.
Constant Summary
Constants inherited from JobWithRegister
Instance Attribute Summary collapse
-
#attribute_renderers ⇒ Object
readonly
Returns the value of attribute attribute_renderers.
-
#exclusive ⇒ Object
readonly
Returns the value of attribute exclusive.
-
#resolver ⇒ Object
readonly
Returns the value of attribute resolver.
Attributes inherited from JobWithRegister
Attributes inherited from Job
Instance Method Summary collapse
-
#initialize(attributes: [], exclusive: false, name: '', register: DEFAULT_REGISTER, separator: BLANK) ⇒ Transform
constructor
A new instance of Transform.
- #perform(output, payload) ⇒ Object
Methods included from Util::Arrayable
Constructor Details
#initialize(attributes: [], exclusive: false, name: '', register: DEFAULT_REGISTER, separator: BLANK) ⇒ Transform
Returns a new instance of Transform.
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/burner/library/collection/transform.rb', line 28 def initialize( attributes: [], exclusive: false, name: '', register: DEFAULT_REGISTER, separator: BLANK ) super(name: name, register: register) @resolver = Objectable.resolver(separator: separator) @exclusive = exclusive || false @attribute_renderers = Modeling::Attribute.array(attributes) .map { |a| Modeling::AttributeRenderer.new(a, resolver) } freeze end |
Instance Attribute Details
#attribute_renderers ⇒ Object (readonly)
Returns the value of attribute attribute_renderers.
24 25 26 |
# File 'lib/burner/library/collection/transform.rb', line 24 def attribute_renderers @attribute_renderers end |
#exclusive ⇒ Object (readonly)
Returns the value of attribute exclusive.
24 25 26 |
# File 'lib/burner/library/collection/transform.rb', line 24 def exclusive @exclusive end |
#resolver ⇒ Object (readonly)
Returns the value of attribute resolver.
24 25 26 |
# File 'lib/burner/library/collection/transform.rb', line 24 def resolver @resolver end |
Instance Method Details
#perform(output, payload) ⇒ Object
47 48 49 50 51 52 53 54 |
# File 'lib/burner/library/collection/transform.rb', line 47 def perform(output, payload) payload[register] = array(payload[register]).map { |row| transform(row, payload.time) } attr_count = attribute_renderers.length row_count = payload[register].length output.detail("Transformed #{attr_count} attributes(s) for #{row_count} row(s)") end |