class DDQL::TokenType::SubQueryAlias

Public Class Methods

new() click to toggle source
Calls superclass method DDQL::TokenType::new
# File lib/ddql/token_type.rb, line 469
def initialize
  super(name: :sub_query_alias, pattern: /AS\s+(?<sub_query_alias>#{FACTOR_PATTERN})/)
  trimming!
end

Public Instance Methods

as_hash(data) click to toggle source
# File lib/ddql/token_type.rb, line 474
def as_hash(data)
  factor, desc = data.split(':', 2)
  desc = factor unless desc
  {name => {factor: factor, desc: desc}}
end
parse(parser, token, expression: nil) click to toggle source
# File lib/ddql/token_type.rb, line 480
def parse(parser, token, expression: nil)
  if expression.nil?
    raise 'expected AS to be part of an ALIAS expression'
  end
  if expression && expression.key?(:sub_query_expression)
    expression[:sub_query] = parser.class.parse(expression[:sub_query_expression])
    expression.delete :sub_query_expression
  end
  expression.merge(as_hash(token.data))
end
post_process(parser:, expression:) click to toggle source
# File lib/ddql/token_type.rb, line 491
def post_process(parser:, expression:)
  token = parser.consume TokenType::SUB_Q_ALIAS
  new_expression = expression.merge!(token.parse(parser, expression: expression))
  [token, new_expression]
end
supports_post_processing?() click to toggle source
# File lib/ddql/token_type.rb, line 497
def supports_post_processing?
  true
end