Sha256: 1d4506f1d1a0592082bbb62cdd8b467dd41003e642dae9abb4ddad0950bc8e40
Contents?: true
Size: 917 Bytes
Versions: 232
Compression:
Stored size: 917 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 recursively_valid?(obj) obj.is_a?(Hash) && super end # @override Base def valid?(obj) obj.is_a?(Hash) end def new(*args, &blk) Hash.new(*T.unsafe(args), &blk) 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
232 entries across 232 versions & 1 rubygems