Sha256: 0bd8c1f75dfb97ee0475f35b14a0aacf3038af351f9d4e0a795431f8001649f4

Contents?: true

Size: 838 Bytes

Versions: 1

Compression:

Stored size: 838 Bytes

Contents

class Hash

  #def try_get(*args)
    #args.each do |arg|
      #return nil unless options.is_a? ::Hash || options.has_key?(arg)
      #options = options[arg]
    #end
    #options
  #end

  #case_sym 表示是否区分string和symbol
  def search(key, case_sym = false)
    h = self.clone
    h.symbolize_keys! and key = key.to_sym if case_sym

    h.nested_find(key)
  end

  protected
  def nested_find(key)
    h = self
    return h[key] if h.has_key?(key)

    value = nil
    keys.each do |k|
      tmp = h[k]
      if tmp.is_a? Array
        tmp.flatten!
        tmp.each do |item|
          return value if item.respond_to?(:nested_find) && (value = item.nested_find(key)).present?   
        end
      end
      return value if tmp.respond_to?(:nested_find) && (value = tmp.nested_find(key)).present?
    end
    value
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
taobao_api-0.2.1 lib/taobao_api/util/hash.rb