Sha256: 7a5d996d4c95976273ca0cefa4342cc47c3febf98a0f52b6262948438f932a08

Contents?: true

Size: 1.04 KB

Versions: 1

Compression:

Stored size: 1.04 KB

Contents

require 'json'
module Derketo
  class Event
    attr_accessor :class_name, :return_value, :type, :method_id, :parameters, :previous, :next

    def initialize(tracepoint)
      @class_name = tracepoint.defined_class.to_s
      @return_value = tracepoint.event == :return ? tracepoint.return_value : nil
      @type = tracepoint.event
      @method_id = tracepoint.method_id
      @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

1 entries across 1 versions & 1 rubygems

Version Path
derketo-0.1.0 lib/derketo/events/event.rb