Sha256: 42d8d6016e10376049753e9bcf0eed5344803c03d2b2170b8c3746dab18b648c

Contents?: true

Size: 999 Bytes

Versions: 36

Compression:

Stored size: 999 Bytes

Contents

module I18n
  module JS
    # @api private
    module Private
      # Hash with string keys converted to symbol keys
      # Used for handling values read on YAML
      #
      # @api private
      class HashWithSymbolKeys < ::Hash
        # An instance can only be created by passing in another hash
        def initialize(hash)
          raise TypeError unless hash.is_a?(::Hash)

          hash.each_key do |key|
            # Objects like `Integer` does not have `to_sym`
            new_key = key.respond_to?(:to_sym) ? key.to_sym : key
            self[new_key] = hash[key]
          end

          self.default = hash.default if hash.default
          self.default_proc = hash.default_proc if hash.default_proc

          freeze
        end

        # From AS Core extension
        def slice(*keys)
          hash = keys.each_with_object(Hash.new) do |k, hash|
            hash[k] = self[k] if has_key?(k)
          end
          self.class.new(hash)
        end
      end
    end
  end
end

Version data entries

36 entries across 36 versions & 1 rubygems

Version Path
i18n-js-3.9.2 lib/i18n/js/private/hash_with_symbol_keys.rb
i18n-js-3.9.1 lib/i18n/js/private/hash_with_symbol_keys.rb
i18n-js-3.9.0 lib/i18n/js/private/hash_with_symbol_keys.rb
i18n-js-3.8.4 lib/i18n/js/private/hash_with_symbol_keys.rb
i18n-js-3.8.3 lib/i18n/js/private/hash_with_symbol_keys.rb
i18n-js-3.8.2 lib/i18n/js/private/hash_with_symbol_keys.rb
i18n-js-3.8.1 lib/i18n/js/private/hash_with_symbol_keys.rb
i18n-js-3.8.0 lib/i18n/js/private/hash_with_symbol_keys.rb
i18n-js-3.7.1 lib/i18n/js/private/hash_with_symbol_keys.rb
i18n-js-3.7.0 lib/i18n/js/private/hash_with_symbol_keys.rb
i18n-js-3.6.0 lib/i18n/js/private/hash_with_symbol_keys.rb
i18n-js-3.5.1 lib/i18n/js/private/hash_with_symbol_keys.rb
i18n-js-3.5.0 lib/i18n/js/private/hash_with_symbol_keys.rb
i18n-js-3.4.2 lib/i18n/js/private/hash_with_symbol_keys.rb
i18n-js-3.4.1 lib/i18n/js/private/hash_with_symbol_keys.rb
i18n-js-3.4.0 lib/i18n/js/private/hash_with_symbol_keys.rb
i18n-js-3.3.0 lib/i18n/js/private/hash_with_symbol_keys.rb
i18n-js-3.2.3 lib/i18n/js/private/hash_with_symbol_keys.rb
i18n-js-3.2.2 lib/i18n/js/private/hash_with_symbol_keys.rb
i18n-js-3.2.1 lib/i18n/js/private/hash_with_symbol_keys.rb