Sha256: dbfb396e76f8cdccf2d311b0bb4d825b87c5f30bd688762653579e3e752e0c09

Contents?: true

Size: 1.3 KB

Versions: 3

Compression:

Stored size: 1.3 KB

Contents

# frozen_string_literal: true

module Dry
  module Types
    # Common Type module denoting an object is a Type
    #
    # @api public
    module Type
      extend ::Dry::Core::Deprecations[:"dry-types"]

      deprecate(:safe, :lax)

      # Whether a value is a valid member of the type
      #
      # @return [Boolean]
      #
      # @api private
      def valid?(input = Undefined)
        call_safe(input) { return false }
        true
      end
      # Anything can be coerced matches
      alias_method :===, :valid?

      # Apply type to a value
      #
      # @overload call(input = Undefined)
      #   Possibly unsafe coercion attempt. If a value doesn't
      #   match the type, an exception will be raised.
      #
      #   @param [Object] input
      #   @return [Object]
      #
      # @overload call(input = Undefined)
      #   When a block is passed, {#call} will never throw an exception on
      #   failed coercion, instead it will call the block.
      #
      #   @param [Object] input
      #   @yieldparam [Object] output Partially coerced value
      #   @return [Object]
      #
      # @api public
      def call(input = Undefined, &)
        if block_given?
          call_safe(input, &)
        else
          call_unsafe(input)
        end
      end
      alias_method :[], :call
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
dry-types-1.8.2 lib/dry/types/type.rb
dry-types-1.8.1 lib/dry/types/type.rb
dry-types-1.8.0 lib/dry/types/type.rb