module Refract

Public Class Methods

Private Class Methods

recursive_lookup(json, query) click to toggle source
# File lib/refract.rb, line 13
def self.recursive_lookup(json, query)
  return [] unless json['content']
  return [] unless json['content'].is_a?(Array)

  result = json['content'].select do |element|
    query.map do |k, v|
      if v.is_a?(Hash) && element[k].is_a?(Hash)
        (v.to_a - element[k].to_a).empty?
      else
        element[k] == v
      end
    end.all?
  end

  json['content'].map do |element|
    search(element, query)
  end.flatten.concat(result)
end