class Neo4j::Cypher::ClauseList
Attributes
clause_list[RW]
variables[RW]
Public Class Methods
new(variables = [])
click to toggle source
# File lib/neo4j-cypher/clause_list.rb 8 def initialize(variables = []) 9 @variables = variables 10 @lists_of_clause_list = [[]] 11 @curr_clause_list = @lists_of_clause_list.first 12 @insert_order = 0 13 end
Public Instance Methods
create_variable(var)
click to toggle source
def debug
@curr_clause_list.each_with_index { |c, i| puts " #{i} #{c.clause_type.inspect}, #{c.to_cypher} - #{c.class} id: #{c.object_id} order #{c.insert_order}" }
end
# File lib/neo4j-cypher/clause_list.rb 80 def create_variable(var) 81 raise "Already included #{var}" if @variables.include?(var) 82 @variables << var 83 "v#{@variables.size}".to_sym 84 end
delete(clause_or_context)
click to toggle source
# File lib/neo4j-cypher/clause_list.rb 71 def delete(clause_or_context) 72 c = clause_or_context.respond_to?(:clause) ? clause_or_context.clause : clause_or_context 73 @curr_clause_list.delete(c) 74 end
depth()
click to toggle source
# File lib/neo4j-cypher/clause_list.rb 48 def depth 49 @lists_of_clause_list.count 50 end
each() { |c| ... }
click to toggle source
# File lib/neo4j-cypher/clause_list.rb 27 def each 28 @curr_clause_list.each { |c| yield c } 29 end
empty?()
click to toggle source
# File lib/neo4j-cypher/clause_list.rb 15 def empty? 16 !first 17 end
find(clause_type)
click to toggle source
# File lib/neo4j-cypher/clause_list.rb 23 def find(clause_type) 24 @curr_clause_list.find { |c| c.clause_type == clause_type } 25 end
group_by_clause()
click to toggle source
# File lib/neo4j-cypher/clause_list.rb 86 def group_by_clause 87 prev_clause = nil 88 inject([]) do |memo, clause| 89 memo << [] if clause.clause_type != prev_clause 90 prev_clause = clause.clause_type 91 memo.last << clause 92 memo 93 end 94 end
include?(clause_type)
click to toggle source
# File lib/neo4j-cypher/clause_list.rb 19 def include?(clause_type) 20 !!find(clause_type) 21 end
insert(clause)
click to toggle source
# File lib/neo4j-cypher/clause_list.rb 52 def insert(clause) 53 ctype = clause.clause_type 54 55 if Clause::ORDER.include?(ctype) 56 # which list should we add the cluase to, the root or the sub list ? 57 # ALl the start and return clauses should move to the clause_list 58 c = (depth > 1 && (ctype == :start || ctype == :return)) ? @lists_of_clause_list.first : @curr_clause_list 59 c << clause 60 @insert_order += 1 61 clause.insert_order = @insert_order 62 c.sort! 63 end 64 self 65 end
join_group(list)
click to toggle source
# File lib/neo4j-cypher/clause_list.rb 96 def join_group(list) 97 list.map { |c| c.to_cypher }.join(list.first.separator) 98 end
last()
click to toggle source
# File lib/neo4j-cypher/clause_list.rb 67 def last 68 @curr_clause_list.last 69 end
pop()
click to toggle source
# File lib/neo4j-cypher/clause_list.rb 37 def pop 38 @lists_of_clause_list.pop 39 @curr_clause_list = @lists_of_clause_list.last 40 @curr_clause_list.sort! 41 self 42 end
prefix(list)
click to toggle source
# File lib/neo4j-cypher/clause_list.rb 105 def prefix(list) 106 (depth > 1) && !prefix_for_depth_2.include?(list.first.clause_type) ? '' : "#{list.first.prefix} " 107 end
prefix_for_depth_2()
click to toggle source
# File lib/neo4j-cypher/clause_list.rb 109 def prefix_for_depth_2 110 if include?(:match) && include?(:where) 111 [:set, :delete, :create, :remove, :where] 112 else 113 [:set, :delete, :create, :remove] 114 end 115 116 end
push()
click to toggle source
# File lib/neo4j-cypher/clause_list.rb 31 def push 32 @lists_of_clause_list << [] 33 @curr_clause_list = @lists_of_clause_list.last 34 self 35 end
return_clause()
click to toggle source
# File lib/neo4j-cypher/clause_list.rb 44 def return_clause 45 @curr_clause_list.find{|r| r.respond_to?(:return_items)} 46 end
to_cypher()
click to toggle source
# File lib/neo4j-cypher/clause_list.rb 100 def to_cypher 101 # Sub lists, like in with clause should not have a clause prefix like WHERE or MATCH 102 group_by_clause.map { |list| "#{prefix(list)}#{join_group(list)}" }.join(' ') 103 end