class DDQL::TokenType::SubQueryExpression

Public Class Methods

new() click to toggle source
Calls superclass method DDQL::TokenType::new
# File lib/ddql/token_type.rb, line 503
def initialize
  super(name: :sub_query_expression, pattern: /expression:\s*(?<sub_query_expression>[^\{\}#{Regexp.escape(TokenType::NESTED_OPEN_PATTERN)}#{Regexp.escape(TokenType::NESTED_CLOSE_PATTERN)}]{5,})\s*,?\s*/)
end

Public Instance Methods

as_hash(data) click to toggle source
# File lib/ddql/token_type.rb, line 507
def as_hash(data)
  {name => data}
end
parse(parser, token, expression: nil) click to toggle source
# File lib/ddql/token_type.rb, line 511
def parse(parser, token, expression: nil)
  data = token.data.strip
  if data.start_with? TokenType::NESTED_OPEN_PATTERN
    sub_data = data[1..(data.index(TokenType::NESTED_CLOSE_PATTERN))]
    data = parser.class.parse sub_data
  end

  if expression.nil? || expression.keys != %i[agg sub_query_fields sub_query_type]
    as_hash(data).merge parser.parse
  else
    expression.merge(as_hash(data))
  end
end