module Remap::Catchable

@api private

Public Instance Methods

catch_fatal(state, backtrace, &block) click to toggle source

@param state [State] @param backtrace [Array<String>]

@yieldparam state [State] @yieldparam id [Symbol, String] @yieldreturn [State<T>]

@return [State<T>] @raise [Failure::Error]

# File lib/remap/catchable.rb, line 32
def catch_fatal(state, backtrace, &block)
  id = to_id(:fatal)

  failure = catch(id) do
    return block[state.set(fatal_id: id), fatal_id: id].remove_fatal_id
  end

  raise failure.exception(backtrace)
end
catch_ignored(state, &block) click to toggle source

@param state [State]

@yieldparam state [State] @yieldparam id [Symbol, String] @yieldreturn [State<T>]

@return [State<T>]

# File lib/remap/catchable.rb, line 15
def catch_ignored(state, &block)
  id = to_id(:ignored)

  catch(id) do
    block[state.set(id: id), id: id].remove_id
  end
end

Private Instance Methods

to_id(value) click to toggle source
# File lib/remap/catchable.rb, line 44
def to_id(value)
  [value, self.class.name&.downcase || :unknown].join("::")
end