Module: Textus::Value::Result

Defined in:
lib/textus/value/result.rb

Overview

Unwraps Dry::Monads results at the Gate seam. Every action returns Success(value) or Failure(code:, message:, details:). This module converts Failure into an ActionError for surfaces (CLI, MCP) that expect exceptions.

Class Method Summary collapse

Class Method Details

.unwrap(result) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/textus/value/result.rb', line 10

def self.unwrap(result)
  case result
  when Dry::Monads::Result::Success then result.value!
  when Dry::Monads::Result::Failure
    failure = result.failure
    raise ActionError.new(
      failure[:code] || :internal,
      failure[:message] || "action failed",
      details: failure[:details] || {},
    )
  else
    result
  end
end