Module: NewRelic::Agent::AttributeProcessing
- Defined in:
- lib/new_relic/agent/attribute_processing.rb
Constant Summary collapse
- EMPTY_HASH_STRING_LITERAL =
'{}'.freeze
- EMPTY_ARRAY_STRING_LITERAL =
'[]'.freeze
Class Method Summary collapse
- .flatten_and_coerce(object, prefix = nil, result = {}, &blk) ⇒ Object
- .flatten_and_coerce_array(array, prefix, result, &blk) ⇒ Object
- .flatten_and_coerce_hash(hash, prefix, result, &blk) ⇒ Object
Class Method Details
.flatten_and_coerce(object, prefix = nil, result = {}, &blk) ⇒ Object
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/new_relic/agent/attribute_processing.rb', line 13 def flatten_and_coerce(object, prefix = nil, result = {}, &blk) if object.is_a?(Hash) flatten_and_coerce_hash(object, prefix, result, &blk) elsif object.is_a?(Array) flatten_and_coerce_array(object, prefix, result, &blk) elsif prefix val = Coerce.scalar(object) if blk yield(prefix, val) elsif !val.nil? result[prefix] = val end else NewRelic::Agent.logger.warn("Unexpected object: #{object.inspect} with nil prefix passed to NewRelic::Agent::AttributeProcessing.flatten_and_coerce") end result end |
.flatten_and_coerce_array(array, prefix, result, &blk) ⇒ Object
46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/new_relic/agent/attribute_processing.rb', line 46 def flatten_and_coerce_array(array, prefix, result, &blk) if array.empty? if blk yield(prefix, EMPTY_ARRAY_STRING_LITERAL) else result[prefix] = EMPTY_ARRAY_STRING_LITERAL end else array.each_with_index do |val, idx| next_prefix = prefix ? "#{prefix}.#{idx}" : idx.to_s flatten_and_coerce(val, next_prefix, result, &blk) end end end |
.flatten_and_coerce_hash(hash, prefix, result, &blk) ⇒ Object
31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/new_relic/agent/attribute_processing.rb', line 31 def flatten_and_coerce_hash(hash, prefix, result, &blk) if hash.empty? if blk yield(prefix, EMPTY_HASH_STRING_LITERAL) else result[prefix] = EMPTY_HASH_STRING_LITERAL end else hash.each do |key, val| next_prefix = prefix ? "#{prefix}.#{key}" : key.to_s flatten_and_coerce(val, next_prefix, result, &blk) end end end |