module ScopedSearch::QueryLanguage::AST

Public Class Methods

from_array(arg) click to toggle source

Constructs an AST from an array notation.

   # File lib/scoped_search/query_language/ast.rb
 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