inspec/lib/utils/object_traversal.rb

24 lines
598 B
Ruby
Raw Normal View History

# encoding: utf-8
# author: Dominik Richter
# author: Christoph Hartmann
module ObjectTraverser
def extract_value(keys, value)
key = keys.shift
2016-03-19 17:50:32 +00:00
return nil if key.nil? || value.nil?
# if value is an array, iterate over each child
if value.is_a?(Array)
value = value.map { |i|
extract_value([key], i)
}
else
value = value[key.to_s].nil? ? nil : value[key.to_s]
end
# if there are no more keys, just return the value
return value if keys.first.nil?
# if there are more keys, extract more
extract_value(keys.clone, value)
end
end