Sha256: e28cefe46b79ce762df6ee4c492e65ff552f5a49596ded902f86608bae2d3481

Contents?: true

Size: 558 Bytes

Versions: 4

Compression:

Stored size: 558 Bytes

Contents

# frozen_string_literal: true

module Pipeable
  module Steps
    # Validates a result via a callable operation.
    class Validate < Abstract
      def initialize(operation, as: :to_h, **)
        super(**)
        @operation = operation
        @as = as
      end

      def call result
        result.bind do |payload|
          value = operation.call payload

          return Failure value if value.failure?

          Success(as ? value.public_send(as) : value)
        end
      end

      private

      attr_reader :operation, :as
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
pipeable-0.4.0 lib/pipeable/steps/validate.rb
pipeable-0.3.0 lib/pipeable/steps/validate.rb
pipeable-0.2.0 lib/pipeable/steps/validate.rb
pipeable-0.1.0 lib/pipeable/steps/validate.rb