Sha256: bdf2571266b4e5379c4549c61794c7aea09e724dce516e5a96173232d54e26d5

Contents?: true

Size: 732 Bytes

Versions: 20

Compression:

Stored size: 732 Bytes

Contents

# frozen_string_literal: true

module Mihari
  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

20 entries across 20 versions & 1 rubygems

Version Path
mihari-8.1.0 lib/mihari/concerns/error_unwrappable.rb
mihari-8.0.2 lib/mihari/concerns/error_unwrappable.rb
mihari-8.0.1 lib/mihari/concerns/error_unwrappable.rb
mihari-8.0.0 lib/mihari/concerns/error_unwrappable.rb
mihari-7.6.4 lib/mihari/concerns/error_unwrappable.rb
mihari-7.6.3 lib/mihari/concerns/error_unwrappable.rb
mihari-7.6.2 lib/mihari/concerns/error_unwrappable.rb
mihari-7.6.1 lib/mihari/concerns/error_unwrappable.rb
mihari-7.6.0 lib/mihari/concerns/error_unwrappable.rb
mihari-7.5.0 lib/mihari/concerns/error_unwrappable.rb
mihari-7.4.0 lib/mihari/concerns/error_unwrappable.rb
mihari-7.3.2 lib/mihari/concerns/error_unwrappable.rb
mihari-7.3.1 lib/mihari/concerns/error_unwrappable.rb
mihari-7.3.0 lib/mihari/concerns/error_unwrappable.rb
mihari-7.2.0 lib/mihari/concerns/error_unwrappable.rb
mihari-7.1.3 lib/mihari/concerns/error_unwrappable.rb
mihari-7.1.2 lib/mihari/concerns/error_unwrappable.rb
mihari-7.1.1 lib/mihari/concerns/error_unwrappable.rb
mihari-7.1.0 lib/mihari/concerns/error_unwrappable.rb
mihari-7.0.5 lib/mihari/concerns/error_unwrappable.rb