Module: Janeway::Interpreters::TreeConstructor
- Defined in:
- lib/janeway/interpreters/tree_constructor.rb
Overview
Constructs a tree of interpreter objects.
It is used when an iterator method such as #each has been called to construct the chain of interpreter objects to handle the query.
Defined Under Namespace
Classes: Literal
Class Method Summary collapse
Class Method Details
.ast_node_to_deleter(expr) ⇒ Object
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
# File 'lib/janeway/interpreters/tree_constructor.rb', line 41 def self.ast_node_to_deleter(expr) case expr when AST::IndexSelector then IndexSelectorDeleter.new(expr) when AST::ArraySliceSelector then ArraySliceSelectorDeleter.new(expr) when AST::NameSelector then NameSelectorDeleter.new(expr) when AST::FilterSelector then FilterSelectorDeleter.new(expr) when AST::WildcardSelector then WildcardSelectorDeleter.new(expr) when AST::ChildSegment then ChildSegmentDeleter.new(expr) when AST::RootNode then RootNodeDeleter.new(expr) when nil then nil # caller has no @next node else raise "Unknown AST expression: #{expr.inspect}" end end |
.ast_node_to_interpreter(expr) ⇒ Object
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/janeway/interpreters/tree_constructor.rb', line 20 def self.ast_node_to_interpreter(expr) case expr when AST::RootNode then Interpreters::RootNodeInterpreter.new(expr) when AST::ArraySliceSelector then Interpreters::ArraySliceSelectorInterpreter.new(expr) when AST::IndexSelector then Interpreters::IndexSelectorInterpreter.new(expr) when AST::NameSelector then Interpreters::NameSelectorInterpreter.new(expr) when AST::WildcardSelector then Interpreters::WildcardSelectorInterpreter.new(expr) when AST::FilterSelector then Interpreters::FilterSelectorInterpreter.new(expr) when AST::ChildSegment then Interpreters::ChildSegmentInterpreter.new(expr) when AST::DescendantSegment then Interpreters::DescendantSegmentInterpreter.new(expr) when AST::BinaryOperator then Interpreters::BinaryOperatorInterpreter.new(expr) when AST::UnaryOperator then Interpreters::UnaryOperatorInterpreter.new(expr) when AST::CurrentNode then Interpreters::CurrentNodeInterpreter.new(expr) when AST::Function then Interpreters::FunctionInterpreter.new(expr) when AST::StringType, AST::Number, AST::Null, AST::Boolean then Literal.new expr.value when nil then nil # caller has no @next node else raise "Unknown AST expression: #{expr.inspect}" end end |