Constructs an AST from an array notation.
# File lib/scoped_search/query_language/ast.rb, line 4 def self.from_array(arg) if arg.kind_of?(Array) operator = arg.shift case operator when :and, :or LogicalOperatorNode.new(operator, arg.map { |c| from_array(c) }) when Symbol OperatorNode.new(operator, arg.map { |c| from_array(c) }) else raise ScopedSearch::Exception, "Not a valid array representation of an AST!" end else return LeafNode.new(arg) end end