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