Class: Textus::Value::Result

Inherits:
Data
  • Object
show all
Defined in:
lib/textus/value/result.rb

Overview

rubocop:disable Lint/ConstantDefinitionInBlock

Defined Under Namespace

Classes: UnwrapError

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#errorObject (readonly)

Returns the value of attribute error

Returns:

  • (Object)

    the current value of error



4
5
6
# File 'lib/textus/value/result.rb', line 4

def error
  @error
end

#okObject (readonly)

Returns the value of attribute ok

Returns:

  • (Object)

    the current value of ok



4
5
6
# File 'lib/textus/value/result.rb', line 4

def ok
  @ok
end

#valueObject (readonly)

Returns the value of attribute value

Returns:

  • (Object)

    the current value of value



4
5
6
# File 'lib/textus/value/result.rb', line 4

def value
  @value
end

Class Method Details

.extract(result) ⇒ Object



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

def self.extract(result)
  case result
  when self
    if result.success?
      result.value
    else
      err = result.error
      raise Textus::ActionError.new(err[:code] || :error, err[:message] || "action failed", details: err[:details] || {})
    end
  else
    result
  end
end

.failure(code, message, details: {}) ⇒ Object



7
8
9
# File 'lib/textus/value/result.rb', line 7

def self.failure(code, message, details: {})
  new(ok: false, value: nil, error: { code: code, message: message, details: details })
end

.success(value) ⇒ Object



5
# File 'lib/textus/value/result.rb', line 5

def self.success(value) = new(ok: true, value: value, error: nil)

Instance Method Details

#failure?Boolean

Returns:

  • (Boolean)


26
# File 'lib/textus/value/result.rb', line 26

def failure? = !ok

#success?Boolean

Returns:

  • (Boolean)


25
# File 'lib/textus/value/result.rb', line 25

def success? = ok

#unwrapObject



28
29
30
31
32
# File 'lib/textus/value/result.rb', line 28

def unwrap
  raise Result::UnwrapError.new(error[:code], error[:message], details: error[:details]) unless ok

  value
end