Class: SQLTree::Node::SelectExpression

Inherits:
Base
  • Object
show all
Defined in:
lib/sql_tree/node/select_expression.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Base

[], #inspect, #quote_str, #quote_var

Constructor Details

#initialize(expression, variable = nil) ⇒ SelectExpression

Returns a new instance of SelectExpression.



7
8
9
10
# File 'lib/sql_tree/node/select_expression.rb', line 7

def initialize(expression, variable = nil)
  @expression = expression
  @variable   = variable
end

Instance Attribute Details

#expressionObject

Returns the value of attribute expression.



5
6
7
# File 'lib/sql_tree/node/select_expression.rb', line 5

def expression
  @expression
end

#variableObject

Returns the value of attribute variable.



5
6
7
# File 'lib/sql_tree/node/select_expression.rb', line 5

def variable
  @variable
end

Class Method Details

.parse(tokens) ⇒ Object



18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/sql_tree/node/select_expression.rb', line 18

def self.parse(tokens)
  if tokens.peek == SQLTree::Token::MULTIPLY
    tokens.consume(SQLTree::Token::MULTIPLY)
    return SQLTree::Node::ALL_FIELDS
  else
    expression = SQLTree::Node::Expression.parse(tokens)
    expr = SQLTree::Node::SelectExpression.new(expression)
    if tokens.peek == SQLTree::Token::AS
      tokens.consume(SQLTree::Token::AS)
      expr.variable = SQLTree::Node::Variable.parse(tokens).name
    end
    return expr
  end
end

Instance Method Details

#==(other) ⇒ Object



33
34
35
# File 'lib/sql_tree/node/select_expression.rb', line 33

def ==(other)
  other.expression == self.expression && other.variable == self.variable
end

#to_sqlObject



12
13
14
15
16
# File 'lib/sql_tree/node/select_expression.rb', line 12

def to_sql
  sql = @expression.to_sql
  sql << " AS " << quote_var(@variable) if @variable
  return sql
end