Sha256: 49bd05f5e5d486a1283890ae43fb8966e9ffcdfdde6792c36d4d9671c6d21c76

Contents?: true

Size: 694 Bytes

Versions: 3

Compression:

Stored size: 694 Bytes

Contents

module Dry
  module Types
    class Array < Definition
      class Member < Array
        attr_reader :member

        def initialize(primitive, options = {})
          @member = options.fetch(:member)
          super
        end

        def call(input, meth = :call)
          input.map { |el| member.__send__(meth, el) }
        end
        alias_method :[], :call

        def try(input, &block)
          result = call(input, :try)

          if result.all?(&:success?)
            success(result.map(&:input))
          else
            failure = failure(input, result.select(&:failure?))
            block ? yield(failure) : failure
          end
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
dry-types-0.7.2 lib/dry/types/array/member.rb
dry-types-0.7.1 lib/dry/types/array/member.rb
dry-types-0.7.0 lib/dry/types/array/member.rb