Class: SQLTree::Node::Expression

Inherits:
Base
  • Object
show all
Defined in:
lib/active_record/turntable/sql_tree_patch.rb

Direct Known Subclasses

BinaryOperator, PrefixOperator

Defined Under Namespace

Classes: BinaryOperator, EscapedValue, Field, PrefixOperator, Value

Class Method Summary collapse

Methods inherited from Base

#quote_field_name

Class Method Details

.parse_atomic(tokens) ⇒ Object



295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
# File 'lib/active_record/turntable/sql_tree_patch.rb', line 295

def self.parse_atomic(tokens)
  if SQLTree::Token::LPAREN === tokens.peek
    tokens.consume(SQLTree::Token::LPAREN)
    expr = self.parse(tokens)
    tokens.consume(SQLTree::Token::RPAREN)
    expr
  elsif tokens.peek.prefix_operator?
    PrefixOperator.parse(tokens)
  elsif tokens.peek.variable?
    if SQLTree::Token::LPAREN === tokens.peek(2)
      FunctionCall.parse(tokens)
    elsif SQLTree::Token::DOT === tokens.peek(2)
      Field.parse(tokens)
    else
      Variable.parse(tokens)
    end
  elsif SQLTree::Token::STRING_ESCAPE == tokens.peek
    EscapedValue.parse(tokens)
  elsif SQLTree::Token::BINARY_ESCAPE == tokens.peek
    EscapedValue.parse(tokens)
  elsif SQLTree::Token::INTERVAL === tokens.peek
    IntervalValue.parse(tokens)
  else
    Value.parse(tokens)
  end
end