| Module | ScopedSearch::QueryLanguage::AST |
| In: |
lib/scoped_search/query_language/ast.rb
|
Constructs an AST from an array notation.
# File lib/scoped_search/query_language/ast.rb, line 4
4: def self.from_array(arg)
5: if arg.kind_of?(Array)
6: operator = arg.shift
7: case operator
8: when :and, :or
9: LogicalOperatorNode.new(operator, arg.map { |c| from_array(c) })
10: when Symbol
11: OperatorNode.new(operator, arg.map { |c| from_array(c) })
12: else
13: raise ScopedSearch::Exception, "Not a valid array representation of an AST!"
14: end
15: else
16: return LeafNode.new(arg)
17: end
18: end