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