Module: LibOpenApiImport

Defined in:
lib/open_api_import/filter.rb,
lib/open_api_import/get_examples.rb,
lib/open_api_import/get_patterns.rb,
lib/open_api_import/get_required_data.rb,
lib/open_api_import/get_response_examples.rb,
lib/open_api_import/get_data_all_of_bodies.rb,
lib/open_api_import/pretty_hash_symbolized.rb

Instance Method Summary collapse

Instance Method Details

#filter(hash, keys, nested = false) ⇒ void

filter hash



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/open_api_import/filter.rb', line 3

def filter(hash, keys, nested = false)
  result = {}
  keys = [keys] unless keys.is_a?(Array)
  if nested
    result = hash.nice_filter(keys)
  else
    #to be backwards compatible
    keys.each do |k|
      if k.is_a?(Symbol) and hash.key?(k)
        if hash[k].is_a?(Hash)
          result[k] = {}
        else
          result[k] = hash[k]
        end
      elsif k.is_a?(Symbol) and k.to_s.include?(".") and hash.key?((k.to_s.scan(/(\w+)\./).join).to_sym) #nested 'uno.dos.tres
        kn = k.to_s.split(".")
        vn = kn[1].to_sym
        result[kn.first.to_sym][vn] = filter(hash[kn.first.to_sym], vn).values[0]
      elsif k.is_a?(Hash) and hash.key?(k.keys[0]) #nested {uno: {dos: :tres}}
        result[k.keys[0]][k.values[0]] = filter(hash[k.keys[0]], k.values[0]).values[0]
      end
    end
  end
  return result
end