Sha256: f21645e9739bebab06013adfe83d0c6c217c07cd7309c5a7a3c18ce09b1e454d

Contents?: true

Size: 878 Bytes

Versions: 2

Compression:

Stored size: 878 Bytes

Contents

# frozen_string_literal: true

module Fluxus
  module Results
    module Chainable
      def on_success(expected_type = nil)
        yield(data) if __success_type?(expected_type)
        self
      end

      def on_failure(expected_type = nil)
        yield(data) if __failure_type?(expected_type)
        self
      end

      def on_exception(expected_exception = nil)
        return self unless __failure_type?(:exception)

        if expected_exception.nil? ||
           (expected_exception.is_a?(Exception) && data[:exception].is_a?(expected_exception))
          yield(data)
        end
        self
      end

      def __success_type?(expected_type)
        success? && (expected_type.nil? || expected_type == type)
      end

      def __failure_type?(expected_type = nil)
        failure? && (expected_type.nil? || expected_type == type)
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
fluxus-0.1.2 lib/fluxus/results/chainable.rb
fluxus-0.1.0 lib/fluxus/results/chainable.rb