Sha256: 68e7a39f3213d5e5517b20dc305af95fc761c7b836ca7728fe2a24a1b805623e

Contents?: true

Size: 941 Bytes

Versions: 26

Compression:

Stored size: 941 Bytes

Contents

# frozen_string_literal: true
# typed: true

module T::Types
  class TypedHash < TypedEnumerable
    # Technically we don't need these, but they are a nice api
    attr_reader :keys, :values

    def underlying_class
      Hash
    end

      def initialize(keys:, values:)
      @keys = T::Utils.coerce(keys)
      @values = T::Utils.coerce(values)
      @type = T::Utils.coerce([keys, values])
    end

    # @override Base
    def name
      "T::Hash[#{@keys.name}, #{@values.name}]"
    end

    # @override Base
    def valid?(obj)
      obj.is_a?(Hash) && super
    end

    def new(*args, &blk) # rubocop:disable PrisonGuard/BanBuiltinMethodOverride
      Hash.new(*T.unsafe(args), &blk) # rubocop:disable PrisonGuard/RestrictHashDefaults
    end

    class Untyped < TypedHash
      def initialize
        super(keys: T.untyped, values: T.untyped)
      end

      def valid?(obj)
        obj.is_a?(Hash)
      end
    end
  end
end

Version data entries

26 entries across 26 versions & 1 rubygems

Version Path
sorbet-runtime-0.4.4569 lib/types/types/typed_hash.rb
sorbet-runtime-0.4.4568 lib/types/types/typed_hash.rb
sorbet-runtime-0.4.4565 lib/types/types/typed_hash.rb
sorbet-runtime-0.4.4564 lib/types/types/typed_hash.rb
sorbet-runtime-0.4.4563 lib/types/types/typed_hash.rb
sorbet-runtime-0.4.4562 lib/types/types/typed_hash.rb
sorbet-runtime-0.4.4561 lib/types/types/typed_hash.rb
sorbet-runtime-0.4.4560 lib/types/types/typed_hash.rb
sorbet-runtime-0.4.4559 lib/types/types/typed_hash.rb
sorbet-runtime-0.4.4558 lib/types/types/typed_hash.rb
sorbet-runtime-0.4.4557 lib/types/types/typed_hash.rb
sorbet-runtime-0.4.4556 lib/types/types/typed_hash.rb
sorbet-runtime-0.4.4555 lib/types/types/typed_hash.rb
sorbet-runtime-0.4.4554 lib/types/types/typed_hash.rb
sorbet-runtime-0.4.4553 lib/types/types/typed_hash.rb
sorbet-runtime-0.4.4552 lib/types/types/typed_hash.rb
sorbet-runtime-0.4.4551 lib/types/types/typed_hash.rb
sorbet-runtime-0.4.4550 lib/types/types/typed_hash.rb
sorbet-runtime-0.4.4549 lib/types/types/typed_hash.rb
sorbet-runtime-0.4.4548 lib/types/types/typed_hash.rb