Sha256: cb98c97d783c2f44775e62ab688c9e0da34dc423528c1cc63fe6a7e99abc9d8d

Contents?: true

Size: 640 Bytes

Versions: 1

Compression:

Stored size: 640 Bytes

Contents

module NxtPipeline
  class ErrorCallback
    def initialize(errors, halt_on_error, &callback)
      @errors = errors.any? ? errors : [StandardError]
      @halt_on_error = halt_on_error
      @callback = callback
    end

    attr_accessor :errors, :callback

    def halt_on_error?
      @halt_on_error
    end

    def continue_after_error?
      !halt_on_error?
    end

    def applies_to_error?(error)
      (error.class.ancestors & errors).any?
    end

    def call(error, acc, step)
      args = [error, acc, step]
      args = args.take(callback.arity) unless callback.arity.negative?

      callback.call(*args)
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
nxt_pipeline-2.0.0 lib/nxt_pipeline/error_callback.rb