Sha256: 6ea27ea3fb6efc3c09578a0aedbf6f9ec2e88b2034c5e5788cb7a42552282474

Contents?: true

Size: 960 Bytes

Versions: 1

Compression:

Stored size: 960 Bytes

Contents

require 'dry/types/builder'

module Dry
  module Types
    class Definition
      include Dry::Equalizer(:primitive, :options)
      include Builder

      attr_reader :options

      attr_reader :primitive

      def self.[](primitive)
        if primitive == ::Array
          Definition::Array
        elsif primitive == ::Hash
          Definition::Hash
        else
          self
        end
      end

      def initialize(primitive, options = {})
        @primitive = primitive
        @options = options
      end

      def with(new_options)
        self.class.new(primitive, options.merge(new_options))
      end

      def name
        primitive.name
      end

      def call(input)
        input
      end
      alias_method :[], :call

      def try(input)
        call(input)
      end

      def valid?(input)
        input.is_a?(primitive)
      end
    end
  end
end

require 'dry/types/definition/array'
require 'dry/types/definition/hash'

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
dry-types-0.6.0 lib/dry/types/definition.rb