class Object
Public Instance Methods
drill(obj, target)
click to toggle source
# File lib/dig-deep.rb, line 26 def drill(obj, target) if is_object?(obj) acc = (obj.is_a?(Hash) && obj.key?(target)) \ ? obj[target].is_a?(Array) ? ["#{obj[target]}"] : [ obj[target] ] \ : [] obj.reduce(acc) do |acc, val| val.is_a?(Hash) \ ? ( val.key?(target) \ ? acc << (val[target].is_a?(Array) ? "#{val[target]}" : val[target]) \ : acc << val.values.reduce([]){|acc,v| drill(v,target)} ) : ( val.is_a?(Array) \ ? acc << val.reduce([]){|acc, v| drill(v, target) if is_object?(v) } \ : acc ) end.flatten(1) end end
is_object?(obj)
click to toggle source
# File lib/dig-deep.rb, line 44 def is_object?(obj) obj.class == Hash || obj.class == Array end
serialize_for(obj, target)
click to toggle source
# File lib/dig-deep.rb, line 20 def serialize_for(obj, target) drill(obj, target).map do |m| string_to_array(m) ? string_to_array(m) : m end.compact end
string_to_array(val)
click to toggle source
# File lib/dig-deep.rb, line 48 def string_to_array(val) begin JSON.parse(val) rescue nil end end