Sha256: 006efaf0444e7cf7afef28fc76698377a0776e0912bb0d55141d1d68cf715833

Contents?: true

Size: 714 Bytes

Versions: 28

Compression:

Stored size: 714 Bytes

Contents

module ApipieBindings

  class IndifferentHash < Hash

    def initialize(constructor = {})
      super()
      merge!(constructor)
    end

    def [](k)
      if has_key?(k)
        convert_value(super(k))
      elsif k.is_a?(Symbol) && has_key?(k.to_s)
        convert_value(super(k.to_s))
      elsif k.is_a?(String) && has_key?(k.to_sym)
        convert_value(super(k.to_sym))
      else
        convert_value(super(k))
      end
    end

    private

    def convert_value(value)
      if value.kind_of?(Hash) && !value.is_a?(IndifferentHash)
        IndifferentHash.new(value)
      elsif value.kind_of?(Array)
        value.map { |v| convert_value(v) }
      else
        value
      end
    end
  end
end

Version data entries

28 entries across 28 versions & 1 rubygems

Version Path
apipie-bindings-0.7.0 lib/apipie_bindings/indifferent_hash.rb
apipie-bindings-0.6.0 lib/apipie_bindings/indifferent_hash.rb
apipie-bindings-0.5.0 lib/apipie_bindings/indifferent_hash.rb
apipie-bindings-0.4.0 lib/apipie_bindings/indifferent_hash.rb
apipie-bindings-0.3.0 lib/apipie_bindings/indifferent_hash.rb
apipie-bindings-0.2.3 lib/apipie_bindings/indifferent_hash.rb
apipie-bindings-0.2.2 lib/apipie_bindings/indifferent_hash.rb
apipie-bindings-0.2.1 lib/apipie_bindings/indifferent_hash.rb
apipie-bindings-0.2.0 lib/apipie_bindings/indifferent_hash.rb
apipie-bindings-0.1.0 lib/apipie_bindings/indifferent_hash.rb
apipie-bindings-0.0.19 lib/apipie_bindings/indifferent_hash.rb
apipie-bindings-0.0.18 lib/apipie_bindings/indifferent_hash.rb
apipie-bindings-0.0.17 lib/apipie_bindings/indifferent_hash.rb
apipie-bindings-0.0.16 lib/apipie_bindings/indifferent_hash.rb
apipie-bindings-0.0.15 lib/apipie_bindings/indifferent_hash.rb
apipie-bindings-0.0.14 lib/apipie_bindings/indifferent_hash.rb
apipie-bindings-0.0.13 lib/apipie_bindings/indifferent_hash.rb
apipie-bindings-0.0.12 lib/apipie_bindings/indifferent_hash.rb
apipie-bindings-0.0.11 lib/apipie_bindings/indifferent_hash.rb
apipie-bindings-0.0.10 lib/apipie_bindings/indifferent_hash.rb