Sha256: f04e0778a6f65a3f8e7d1b66e87cde5b791c6fae1ef9631c1865ea8d8d683b09

Contents?: true

Size: 1.13 KB

Versions: 2

Compression:

Stored size: 1.13 KB

Contents

require 'json'
require 'derketo/helpers'
module Derketo
  class Event
    include Derketo::Helpers
    attr_accessor :class_name, :return_value, :type, :method_id, :parameters, :previous, :next

    def initialize(tracepoint)
      @class_name = clean(tracepoint.defined_class.to_s)
      @return_value = tracepoint.event == :return ? clean(tracepoint.return_value.to_s) : nil
      @type = tracepoint.event
      @method_id = clean(tracepoint.method_id.to_s)
      @parameters = tracepoint.self.method(tracepoint.method_id).parameters
      @previous = self
    end

    def to_h
      {
        class: @class_name,
        type: @type,
        method: @method_id,
        parameters: @parameters,
        return_value: @return_value
      }
    end

    # {
    #   "class": "Mermaid",
    #   "type": "call",
    #   "method": "initialize",
    #   "parameters": [],
    #   "return_value": null
    # }
    def to_json
      JSON.generate(to_h)
    end

    # {
    #   :class=>"Mermaid",
    #   :type=>:call,
    #   :method=>:initialize,
    #   :parameters=>[],
    #   :return_value=>nil
    # }
    def to_s
      to_h.to_s
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
derketo-0.1.2 lib/derketo/events/event.rb
derketo-0.1.1 lib/derketo/events/event.rb