class MSFLVisitors::Visitor
Attributes
clauses[RW]
current_clause[RW]
mode[RW]
Public Class Methods
new()
click to toggle source
# File lib/msfl_visitors/visitor.rb, line 29 def initialize self.mode = :term # or :aggregations self.clauses = Array.new end
Public Instance Methods
get_visitor()
click to toggle source
# File lib/msfl_visitors/visitor.rb, line 51 def get_visitor case mode when :term TermFilterVisitor.new(self) when :es_term ESTermFilterVisitor.new(self) else AggregationsVisitor.new(self) end end
in_aggregation_mode() { || ... }
click to toggle source
# File lib/msfl_visitors/visitor.rb, line 62 def in_aggregation_mode self.mode = :aggregations result = yield if block_given? self.mode = :term result end
visit(node)
click to toggle source
# File lib/msfl_visitors/visitor.rb, line 35 def visit(node) if mode == :es_term get_visitor.visit(node) else case node when Nodes::Partial in_aggregation_mode do clauses.concat get_visitor.visit(node) "" end else get_visitor.visit(node) end end end
visit_tree(root)
click to toggle source
# File lib/msfl_visitors/visitor.rb, line 69 def visit_tree(root) [{clause: root.accept(self)}].concat(clauses).reject { |c| c[:clause] == "" } end