Sha256: 5c01ca3f0331973a08a9c51bac1e6a12dfb1eb68aeb001b9b029e53488528268

Contents?: true

Size: 799 Bytes

Versions: 11

Compression:

Stored size: 799 Bytes

Contents

# frozen_string_literal: true

module Buckaruby
  module Support
    # The case insensitive Hash is a Hash with case insensitive keys that
    # can also be accessed by using a Symbol.
    class CaseInsensitiveHash < Hash
      def initialize(constructor = {})
        if constructor.is_a?(Hash)
          super()
          update(constructor)
        else
          super(constructor)
        end
      end

      def [](key)
        super(convert_key(key))
      end

      def []=(key, value)
        super(convert_key(key), value)
      end

      protected

      def update(hash)
        hash.each_pair { |key, value| self[convert_key(key)] = value }
      end

      def convert_key(key)
        string = key.is_a?(Symbol) ? key.to_s : key
        string.downcase
      end
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
buckaruby-2.0.1 lib/buckaruby/support/case_insensitive_hash.rb
buckaruby-2.0.0 lib/buckaruby/support/case_insensitive_hash.rb
buckaruby-1.7.0 lib/buckaruby/support/case_insensitive_hash.rb
buckaruby-1.6.0 lib/buckaruby/support/case_insensitive_hash.rb
buckaruby-1.5.0 lib/buckaruby/support/case_insensitive_hash.rb
buckaruby-1.4.0 lib/buckaruby/support/case_insensitive_hash.rb
buckaruby-1.3.1 lib/buckaruby/support/case_insensitive_hash.rb
buckaruby-1.3.0 lib/buckaruby/support/case_insensitive_hash.rb
buckaruby-1.2.0 lib/buckaruby/support/case_insensitive_hash.rb
buckaruby-1.1.1 lib/buckaruby/support/case_insensitive_hash.rb
buckaruby-1.1.0 lib/buckaruby/support/case_insensitive_hash.rb