Sha256: c57933a4d03e0730b3dcd57df47a999aae45e7d57ed49d7c01364ea1f6cb38b7

Contents?: true

Size: 732 Bytes

Versions: 17

Compression:

Stored size: 732 Bytes

Contents

# frozen_string_literal: true

module Miteru
  module Concerns
    #
    # Error unwrappable concern
    #
    module ErrorUnwrappable
      extend ActiveSupport::Concern

      def unwrap_error(err)
        return err unless err.is_a?(Dry::Monads::UnwrapError)

        # NOTE: UnwrapError's receiver can be either of:
        #       - Dry::Monads::Try::Error
        #       - Dry::Monads::Result::Failure
        receiver = err.receiver
        case receiver
        when Dry::Monads::Try::Error
          # Error may be wrapped like Matryoshka
          unwrap_error receiver.exception
        when Dry::Monads::Failure
          unwrap_error receiver.failure
        else
          err
        end
      end
    end
  end
end

Version data entries

17 entries across 17 versions & 1 rubygems

Version Path
miteru-3.0.1 lib/miteru/concerns/error_unwrappable.rb
miteru-3.0.0 lib/miteru/concerns/error_unwrappable.rb
miteru-2.4.0 lib/miteru/concerns/error_unwrappable.rb
miteru-2.3.2 lib/miteru/concerns/error_unwrappable.rb
miteru-2.3.1 lib/miteru/concerns/error_unwrappable.rb
miteru-2.3.0 lib/miteru/concerns/error_unwrappable.rb
miteru-2.2.4 lib/miteru/concerns/error_unwrappable.rb
miteru-2.2.3 lib/miteru/concerns/error_unwrappable.rb
miteru-2.2.2 lib/miteru/concerns/error_unwrappable.rb
miteru-2.2.1 lib/miteru/concerns/error_unwrappable.rb
miteru-2.2.0 lib/miteru/concerns/error_unwrappable.rb
miteru-2.1.1 lib/miteru/concerns/error_unwrappable.rb
miteru-2.1.0 lib/miteru/concerns/error_unwrappable.rb
miteru-2.0.3 lib/miteru/concerns/error_unwrappable.rb
miteru-2.0.2 lib/miteru/concerns/error_unwrappable.rb
miteru-2.0.1 lib/miteru/concerns/error_unwrappable.rb
miteru-2.0.0 lib/miteru/concerns/error_unwrappable.rb