Module: L43::Core::AsResult

Includes:
Result
Defined in:
lib/l43/core/as_result.rb

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Result

#==, #deconstruct_keys, #message!, #value!

Methods included from Result::Constructors

#error, #ok

Class Method Details

.extended(by) ⇒ Object



8
9
10
# File 'lib/l43/core/as_result.rb', line 8

def self.extended(by)
  by.include self
end

Instance Method Details

#as_result(caller: nil, &blk) ⇒ Object



12
13
14
15
16
17
18
19
20
# File 'lib/l43/core/as_result.rb', line 12

def as_result(caller: nil, &blk)
  Success.new(blk.())
rescue StandardError => se
  Failure.new(
    exception: se,
    message: se.inspect,
    location: [caller, se.backtrace_locations.first].compact.join(" ")
  )
end

#as_result_fn(&blk) ⇒ Object



30
31
32
33
34
# File 'lib/l43/core/as_result.rb', line 30

def as_result_fn(&blk)
  -> (v) do
    as_result { blk.(v) }
  end
end

#defresult(name, &blk) ⇒ Object



22
23
24
25
26
27
28
# File 'lib/l43/core/as_result.rb', line 22

def defresult(name, &blk)
  define_method(name) do |*a, **k, &b|
    as_result(caller: name) do 
      blk.(*a, **k, &b)
    end
  end
end