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
-
#filter(hash, keys, nested = false) ⇒ void
filter hash.
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 |