Sha256: ad9fbde4c771ff9443ff1bf8a322318cb0ced896c4a4ef8a8d19899c86175c16

Contents?: true

Size: 1 KB

Versions: 10

Compression:

Stored size: 1 KB

Contents

# The call info visitor class does a depth-first traversal across a
# list of method infos. At each call_info node, the visitor executes
# the block provided in the #visit method. The block is passed two
# parameters, the event and the call_info instance. Event will be
# either :enter or :exit.
#
#   visitor = RubyProf::CallInfoVisitor.new(result.threads.first.top_call_infos)
#
#   method_names = Array.new
#
#   visitor.visit do |call_info, event|
#     method_names << call_info.target.full_name if event == :enter
#   end
#
#   puts method_names

module RubyProf
  class CallInfoVisitor

    def initialize(call_infos)
      @call_infos = CallInfo.roots_of(call_infos)
    end

    def visit(&block)
      @call_infos.each do |call_info|
        visit_call_info(call_info, &block)
      end
    end

    private
    def visit_call_info(call_info, &block)
      yield call_info, :enter
      call_info.children.each do |child|
        visit_call_info(child, &block)
      end
      yield call_info, :exit
    end
  end

end

Version data entries

10 entries across 10 versions & 3 rubygems

Version Path
ruby-prof-0.17.0 lib/ruby-prof/call_info_visitor.rb
airbnb-ruby-prof-0.0.1 lib/ruby-prof/call_info_visitor.rb
ruby-prof-0.16.2 lib/ruby-prof/call_info_visitor.rb
ruby-prof-0.16.1 lib/ruby-prof/call_info_visitor.rb
ruby-prof-0.16.0 lib/ruby-prof/call_info_visitor.rb
ish_lib_manager-0.0.1 test/dummy/vendor/bundle/ruby/2.3.0/gems/ruby-prof-0.15.9/lib/ruby-prof/call_info_visitor.rb
ruby-prof-0.15.9 lib/ruby-prof/call_info_visitor.rb
ruby-prof-0.15.8 lib/ruby-prof/call_info_visitor.rb
ruby-prof-0.15.7 lib/ruby-prof/call_info_visitor.rb
ruby-prof-0.15.6 lib/ruby-prof/call_info_visitor.rb