class Delfos::Neo4j::CallStackQuery

Attributes

call_sites[R]
execution_count[R]

Public Class Methods

new(call_sites, execution_count) click to toggle source
# File lib/delfos/neo4j/call_stack_query.rb, line 5
def initialize(call_sites, execution_count)
  @call_sites = call_sites

  @execution_count = execution_count
end

Public Instance Methods

params() click to toggle source
# File lib/delfos/neo4j/call_stack_query.rb, line 17
def params
  params = {}

  map_call_sites do |c, i|
    params.merge!(call_site_params(c, i))
  end

  params
end
query() click to toggle source
# File lib/delfos/neo4j/call_stack_query.rb, line 11
def query
  map_call_sites do |c, i|
    call_site_query(c, i)
  end.join("\n")
end

Private Instance Methods

call_site_params(cs, i) click to toggle source
# File lib/delfos/neo4j/call_stack_query.rb, line 73
def call_site_params(cs, i)
  {
    "klass#{i}"                  => cs.klass.to_s,
    "method_name#{i}"            => cs.method_name,
    "method_type#{i}"            => cs.method_type,
    "method_definition_file#{i}" => cs.method_definition_file,
    "execution_count#{i}"        => execution_count,
    "method_definition_line#{i}" => cs.method_definition_line,
    "file#{i}"                   => cs.file,
    "line_number#{i}"            => cs.line_number,
    "step_number#{i}"            => i + 1,
  }
end
call_site_query(_cs, i) click to toggle source
# File lib/delfos/neo4j/call_stack_query.rb, line 37
      def call_site_query(_cs, i)
        <<-QUERY
          MERGE

          (
            k#{i}:Class { name: {klass#{i}} }
          )

          - [:OWNS] ->

          (
            m#{i} :Method {
              type: {method_type#{i}},
              name: {method_name#{i}},
              file: {method_definition_file#{i}},
              line_number: {method_definition_line#{i}}}
          )

          MERGE

          (m#{i})

          -[:CONTAINS]->

          (cs#{i}:CallSite {file: {file#{i}}, line_number: {line_number#{i}}})

          MERGE (e#{i}:CallStack{number: {execution_count#{i}}})

          MERGE (e#{i})
            -
            [:STEP {number: {step_number#{i}}}]
            ->
          (cs#{i})
        QUERY
      end
map_call_sites() { |c, i| ... } click to toggle source
# File lib/delfos/neo4j/call_stack_query.rb, line 31
def map_call_sites
  call_sites.compact.map.with_index do |c, i|
    yield c, i
  end
end