Class: L43::Core::Result

Inherits:
Object
  • Object
show all
Extended by:
Constructors
Includes:
Helpers
Defined in:
lib/l43/core/result.rb,
lib/l43/core/result/helpers.rb,
lib/l43/core/result/constructors.rb

Defined Under Namespace

Modules: Constructors, Helpers

Instance Method Summary collapse

Methods included from Constructors

error, ok

Methods included from Helpers

#as_result, #as_result_fn

Instance Method Details

#==(other) ⇒ Object



13
14
15
16
17
# File 'lib/l43/core/result.rb', line 13

def ==(other)
  return false unless self.class === other

  to_h == other.to_h
end

#deconstructObject



19
20
21
22
23
24
25
# File 'lib/l43/core/result.rb', line 19

def deconstruct(*) 
  if @ok
    [:ok, @value]
  else
    [:error, @message]
  end
end

#error?Boolean

Returns:

  • (Boolean)


27
# File 'lib/l43/core/result.rb', line 27

def error? = !@ok

#map(&blk) ⇒ Object



29
30
31
32
# File 'lib/l43/core/result.rb', line 29

def map(&blk)
  return self unless @ok
  blk.(self)
end

#map_result(&blk) ⇒ Object



34
35
36
37
38
39
# File 'lib/l43/core/result.rb', line 34

def map_result(&blk)
  return self unless @ok
  as_result('map_result') do
    blk.(self)
  end
end

#map_result!(&blk) ⇒ Object



41
42
43
44
# File 'lib/l43/core/result.rb', line 41

def map_result!(&blk)
  return self unless @ok
  self.class.ok(blk.(self))
end

#message!Object Also known as: message

Raises:



46
47
48
49
# File 'lib/l43/core/result.rb', line 46

def message!
  return @message unless @ok
  raise IllegalState, "No error message in an ok result"
end

#ok?Boolean

Returns:

  • (Boolean)


52
# File 'lib/l43/core/result.rb', line 52

def ok? = @ok

#to_hObject Also known as: deconstruct_keys



54
55
56
57
58
59
60
# File 'lib/l43/core/result.rb', line 54

def to_h(*)
  if @ok
    {ok: @value}
  else
    {error: @message}
  end
end

#value!Object Also known as: value

Raises:



63
64
65
66
# File 'lib/l43/core/result.rb', line 63

def value!
  return @value if @ok
  raise IllegalState, "No value in an error result"
end