class Tataru::Flattener
flattens properties to make them digestable
Public Class Methods
new(value)
click to toggle source
# File lib/tataru/flattener.rb, line 6 def initialize(value) @value = value @result = {} end
Public Instance Methods
flatten(value, name)
click to toggle source
# File lib/tataru/flattener.rb, line 16 def flatten(value, name) type = value.class.name .sub(/^Tataru::Representations::/, '') .sub(/Representation$/, '') .downcase method_name = :"flatten_#{type}" raise "cannot flatten #{value.inspect}" unless respond_to?(method_name) send(method_name, value, name) end
flatten_array(value, name)
click to toggle source
# File lib/tataru/flattener.rb, line 34 def flatten_array(value, name) refs = {} value.value.each_with_index do |val, i| key = :"#{name}_#{i}" flatten(val, key) refs[i] = key end @result[name] = { type: :array, references: refs } end
flatten_hash(value, name)
click to toggle source
# File lib/tataru/flattener.rb, line 47 def flatten_hash(value, name) refs = {} value.value.each do |k, v| key = :"#{name}_#{k}" flatten(v, key) refs[k] = key end @result[name] = { type: :hash, references: refs } end
flatten_literal(value, name)
click to toggle source
# File lib/tataru/flattener.rb, line 27 def flatten_literal(value, name) @result[name] = { type: :literal, value: value.value } end
flatten_output(value, name)
click to toggle source
# File lib/tataru/flattener.rb, line 73 def flatten_output(value, name) @result[name] = { type: :output, resource: value.resource_name, output: value.output_field_name } end
flatten_resource(value, name)
click to toggle source
# File lib/tataru/flattener.rb, line 60 def flatten_resource(value, name) refs = {} value.properties.each do |k, v| key = :"#{name}_#{k}" flatten(v, key) refs[k] = key end @result[name] = { type: :hash, references: refs } end
flattened()
click to toggle source
# File lib/tataru/flattener.rb, line 11 def flattened flatten(@value, :top) @result end