class DataNode
Public Class Methods
new(db, agg_db, type, key_procs = {}, data_procs = {}, combine = {}, query = nil)
click to toggle source
# File lib/data_node.rb, line 9 def initialize(db, agg_db, type, key_procs = {}, data_procs = {}, combine = {}, query = nil) @type = type @data = Hash.new { |h,k| h[k] = [] } @combine = combine @processed = {} @key_procs = key_procs @data_procs = data_procs @db, @agg_db = db, agg_db @query = query end
Public Instance Methods
add_ast(ast, file, project) { |keys, data| ... }
click to toggle source
# File lib/data_node.rb, line 34 def add_ast(ast, file, project, &block) process_node(ast, file, project) do |keys, data_point| #join_keys = keys.map { |k,v| v }.join("-") @data[keys].push(data_point) yield keys, @data[keys] if block end @data end
collapse_data(data)
click to toggle source
# File lib/data_node.rb, line 82 def collapse_data(data) combined = {} @combine.each do |k,proc| combined[k] = proc.call(data) end combined end
process_all_ast()
click to toggle source
# File lib/data_node.rb, line 43 def process_all_ast @processed = {} @data.each do |k,v| @processed[k] = collapse_data(v).merge(k) end @processed end
process_node(ast, file, project) { |keys, data_point| ... }
click to toggle source
# File lib/data_node.rb, line 20 def process_node(ast, file, project, &block) if @type.call(ast) keys = {} data_point = {} @key_procs.each do |name, proc| keys[name] = proc.call(ast, file, project) end @data_procs.each do |name, proc| data_point[name] = proc.call(ast, file, project) end yield keys, data_point if block end end
query(ast, file = "N/A", project = "N/A")
click to toggle source
# File lib/data_node.rb, line 51 def query(ast, file = "N/A", project = "N/A") if @query process_node(ast, file, project) do |keys, data| unlikely = @query.call(@agg_db, keys, data) unlikely ? unlikely : nil end end end
save!()
click to toggle source
# File lib/data_node.rb, line 60 def save! process_all_ast #@db.delete_all #@agg_db.delete_all count = 0 if !@key_procs.empty? @processed.each do |k,v| @agg_db.new(v).save count += 1 puts count end end # @data.each do |k,v| # v.each do |v_a| # @db.new(v_a.merge(k)).save # count += 1 # puts count # end # end true end