Sha256: 66046db3800bcf49ece6c6a140f1ee3f360d6d6ead3b315e6d32a370af297cad

Contents?: true

Size: 853 Bytes

Versions: 793

Compression:

Stored size: 853 Bytes

Contents

# frozen_string_literal: true
# typed: true

module T::Types
  # validates that the provided value is within a given set/enum
  class Enum < Base
    extend T::Sig

    attr_reader :values

    # TODO Ideally Hash would not be accepted but there are a lot of uses with prop enum.
    sig {params(values: T.any(Array, Set, Hash, T::Range[T.untyped])).void}
    def initialize(values)
      @values = values
    end

    # @override Base
    def valid?(obj)
      @values.member?(obj)
    end

    # @override Base
    private def subtype_of_single?(other)
      case other
      when Enum
        (other.values - @values).empty?
      else
        false
      end
    end

    # @override Base
    def name
      "T.enum([#{@values.map(&:inspect).join(', ')}])"
    end

    # @override Base
    def describe_obj(obj)
      obj.inspect
    end
  end
end

Version data entries

793 entries across 793 versions & 1 rubygems

Version Path
sorbet-runtime-0.4.4314 lib/types/types/enum.rb
sorbet-runtime-0.4.4313 lib/types/types/enum.rb
sorbet-runtime-0.4.4312 lib/types/types/enum.rb
sorbet-runtime-0.4.4311 lib/types/types/enum.rb
sorbet-runtime-0.4.4310 lib/types/types/enum.rb
sorbet-runtime-0.4.4309 lib/types/types/enum.rb
sorbet-runtime-0.4.4308 lib/types/types/enum.rb
sorbet-runtime-0.4.4307 lib/types/types/enum.rb
sorbet-runtime-0.4.4306 lib/types/types/enum.rb
sorbet-runtime-0.4.4305 lib/types/types/enum.rb
sorbet-runtime-0.4.4304 lib/types/types/enum.rb
sorbet-runtime-0.4.4303 lib/types/types/enum.rb
sorbet-runtime-0.4.4302 lib/types/types/enum.rb
sorbet-runtime-0.4.4301 lib/types/types/enum.rb
sorbet-runtime-0.4.4300 lib/types/types/enum.rb
sorbet-runtime-0.4.4299 lib/types/types/enum.rb
sorbet-runtime-0.4.4298 lib/types/types/enum.rb
sorbet-runtime-0.4.4297 lib/types/types/enum.rb
sorbet-runtime-0.4.4296 lib/types/types/enum.rb
sorbet-runtime-0.4.4295 lib/types/types/enum.rb