Sha256: a20ca15af7912baa1615b181122b294141db7f257d5ef53a34efc01089f82661

Contents?: true

Size: 964 Bytes

Versions: 2

Compression:

Stored size: 964 Bytes

Contents

module SQLTree::Node

  class TableReference < Base

    attr_accessor :table, :table_alias

    def initialize(table, table_alias = nil)
      @table, @table_alias = table, table_alias
    end

    def to_sql
      sql = quote_var(table)
      sql << " AS " << quote_var(table_alias) if table_alias
      return sql
    end

    def ==(other)
      other.table = self.table && other.table_alias == self.table_alias
    end

    def self.parse(tokens)
      if SQLTree::Token::Variable === tokens.next
        table_reference = self.new(tokens.current.literal)
        if tokens.peek == SQLTree::Token::AS || SQLTree::Token::Variable === tokens.peek
          tokens.consume(SQLTree::Token::AS) if tokens.peek == SQLTree::Token::AS
          table_reference.table_alias = SQLTree::Node::Variable.parse(tokens).name
        end
        return table_reference
      else
        raise SQLTree::Parser::UnexpectedToken.new(tokens.current)
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
sql_tree-0.1.0 lib/sql_tree/node/table_reference.rb
sql_tree-0.0.3 lib/sql_tree/node/table_reference.rb