Sha256: ca5c50b42cb261d9f463eee79ecfaecdeabe02a72b8dae884cd4759f19ab8023

Contents?: true

Size: 1.13 KB

Versions: 2

Compression:

Stored size: 1.13 KB

Contents

module Vedeu
  class Trace

    # :nocov:
    # @param options [Hash]
    # @return []
    def self.call(options = {})
      new(options).trace
    end

    # @param options [Hash]
    # @return [Trace]
    def initialize(options = {})
      @options = options
    end

    # @return []
    def trace
      set_trace_func proc { |event, file, line, id, binding, classname|
        if event == watched && classname.to_s.match(klass)
          Vedeu.log(sprintf(" %s %-35s #%s", event, classname, id))
          # binding.eval('local_variables').each do |var|
          #   print("#{var.to_s} = #{binding.local_variable_get(var).inspect}\n")
          # end
        end
      }
    end

    private

    def watched
      options[:event]
    end

    def klass
      options[:klass]
    end

    def options
      defaults.merge!(@options)
    end

    def defaults
      {
        event: 'call',
        klass: /^Vedeu::(?!.*Log|Interface|Line|Stream|Style|Colour|Geometry|Terminal|Esc|ColourTranslator).*/
      }
    end

    # everything except Interface, Geometry and Terminal
    # klass: /^Vedeu::(?!.*Interface|Geometry|Terminal).*/
  end
  # :nocov:
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
vedeu-0.1.17 lib/vedeu/support/trace.rb
vedeu-0.1.16 lib/vedeu/support/trace.rb