Class: DDQL::TokenType::SubQueryGrouping
Constant Summary
ALL, CURRENCY_LITERAL, FACTOR, FACTOR_PATTERN, INFIXOPERATOR, INTEGER_LITERAL, LBRACE, LPAREN, NESTED_CLOSER, NESTED_CLOSE_PATTERN, NESTED_OPENER, NESTED_OPEN_PATTERN, NUMERIC_LITERAL, POSTFIXOPERATOR, PREFIXOPERATOR, RBRACE, RPAREN, SCI_NUM_LITERAL, SCREEN, SPECIAL_MARKER, STRING_LITERAL, SUB_Q_ALIAS, SUB_Q_EXPR, SUB_Q_FIELDS, SUB_Q_GROUP, SUB_Q_TYPE, WHITESPACE
Instance Attribute Summary
#label, #name, #pattern
Instance Method Summary
collapse
#==, all_types_pattern, #comparison?, #data_from, #expression?, #factor?, #group?, #infix?, #interpret, #interpreted_data_from, #literal?, #match?, #postfix?, #prefix?, #screen?, #skipping!, #trimming!
Constructor Details
Returns a new instance of SubQueryGrouping.
546
547
548
549
|
# File 'lib/ddql/token_type.rb', line 546
def initialize
super(name: :sub_query_grouping, pattern: /GROUP BY\s+(?<sub_query_grouping>#{FACTOR_PATTERN})/)
trimming!
end
|
Instance Method Details
#as_hash(data) ⇒ Object
551
552
553
|
# File 'lib/ddql/token_type.rb', line 551
def as_hash(data)
{name => {factor: data}}
end
|
#parse(parser, token, expression: nil) ⇒ Object
555
556
557
558
559
560
|
# File 'lib/ddql/token_type.rb', line 555
def parse(parser, token, expression: nil)
if expression.nil?
raise "expected GROUP BY to be part of an expression"
end
expression.merge(as_hash(token.data))
end
|
#post_process(parser:, expression:) ⇒ Object
562
563
564
565
566
|
# File 'lib/ddql/token_type.rb', line 562
def post_process(parser:, expression:)
token = parser.consume TokenType::SUB_Q_GROUP
new_expression = expression.merge!(token.parse(parser, expression: expression))
[token, new_expression]
end
|
#supports_post_processing? ⇒ Boolean
568
569
570
|
# File 'lib/ddql/token_type.rb', line 568
def supports_post_processing?
true
end
|