class Burner::Library::Collection::Values

Take an array of objects and call values on each object. If include_keys is true (it is false by default), then call keys on the first object and inject that as a “header” object.

Expected Payload input: array of objects. Payload output: An array of arrays.

Attributes

include_keys[R]

Public Class Methods

new(include_keys: false, name: '', register: DEFAULT_REGISTER) click to toggle source
Calls superclass method Burner::JobWithRegister::new
# File lib/burner/library/collection/values.rb, line 22
def initialize(include_keys: false, name: '', register: DEFAULT_REGISTER)
  super(name: name, register: register)

  @include_keys = include_keys || false

  freeze
end

Public Instance Methods

perform(_output, payload) click to toggle source
# File lib/burner/library/collection/values.rb, line 30
def perform(_output, payload)
  payload[register] = array(payload[register])
  keys = include_keys ? [keys(payload[register].first)] : []
  values = payload[register].map { |object| values(object) }
  payload[register] = keys + values
end

Private Instance Methods

keys(object) click to toggle source
# File lib/burner/library/collection/values.rb, line 39
def keys(object)
  object.respond_to?(:keys) ? object.keys : []
end
values(object) click to toggle source
# File lib/burner/library/collection/values.rb, line 43
def values(object)
  object.respond_to?(:values) ? object.values : []
end