Class: Mona::Err

Inherits:
Object
  • Object
show all
Includes:
Result
Defined in:
lib/mona/err.rb

Overview

An Err (failure) result, with optional reason, and metadata

Direct Known Subclasses

DictResult::Err

Constant Summary

Constants included from Result

Result::VERSION

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Result

#==, #and_tap, #and_then, #deconstruct, #deconstruct_keys, #err, #err?, #ok, #ok?, #or_else, #value_or

Constructor Details

#initialize(failure, reason, **meta) ⇒ Err

Returns a new instance of Err.

Raises:

  • (ArgumentError)


10
11
12
13
14
15
16
# File 'lib/mona/err.rb', line 10

def initialize(failure, reason, **meta)
  raise ArgumentError, "meta can't contain :reason or err: key" if meta.key?(:reason) || meta.key?(:err)

  @failure = failure
  @reason  = reason
  @meta    = meta
end

Instance Attribute Details

#failureObject (readonly)

Returns the value of attribute failure.



19
20
21
# File 'lib/mona/err.rb', line 19

def failure
  @failure
end

#metaObject (readonly)

Returns the value of attribute meta.



19
20
21
# File 'lib/mona/err.rb', line 19

def meta
  @meta
end

#reasonObject (readonly)

Returns the value of attribute reason.



19
20
21
# File 'lib/mona/err.rb', line 19

def reason
  @reason
end

Class Method Details

.[](failure, reason = nil, **meta) ⇒ Object



8
# File 'lib/mona/err.rb', line 8

def self.[](failure, reason = nil, **meta) = new(failure, reason, **meta)

Instance Method Details

#either(_ok, err) ⇒ Object



21
# File 'lib/mona/err.rb', line 21

def either(_ok, err) = err.call(@failure, @reason, **@meta)

#inspectObject Also known as: to_s



23
# File 'lib/mona/err.rb', line 23

def inspect = "Err(#{[failure, *reason, *meta.map { "#{_1}: #{_2}" }].join(", ")})"