Sha256: 672201aa05f47a20c2a1b1fac2d4f59ab34e6c36dfb63d5e3e00bb8d4210b9b6

Contents?: true

Size: 820 Bytes

Versions: 1

Compression:

Stored size: 820 Bytes

Contents

module Byebug
  module DAP
    # Methods to safely execute methods.
    # @api private
    module SafeHelpers
      # Safely execute `method` on `target` with `args`.
      # @param target the receiver
      # @param method [std:Symbol] the method name
      # @param args [std:Array] the method arguments
      # @yield called on error
      # @yieldparam ex [std:StandardError] the execution error
      def safe(target, method, *args, &block)
        if method.is_a?(Array) && args.empty?
          method.each { |m| target = target.__send__(m) }
          target
        else
          target.__send__(method, *args)
        end
      rescue StandardError => e
        log "\n! #{e.message} (#{e.class})", *e.backtrace if Debug.evaluate
        block.parameters.empty? ? yield : yield(e)
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
byebug-dap-0.1.4 lib/byebug/dap/helpers/safe_helpers.rb