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



247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
# File 'lib/active_record/turntable/sql_tree_patch.rb', line 247

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