Class: DDQL::TokenType::Operator

Inherits:
DDQL::TokenType show all
Defined in:
lib/ddql/token_type.rb

Direct Known Subclasses

InfixOperator, PostfixOperator, PrefixOperator, Query

Constant Summary collapse

NULL_TYPES =
/IS\s+(NO_INFORMATION|NOT_(APPLICABLE|COLLECTED|DISCLOSED|MEANINGFUL))/

Constants inherited from DDQL::TokenType

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

Attributes inherited from DDQL::TokenType

#label, #name, #pattern

Instance Method Summary collapse

Methods inherited from DDQL::TokenType

#==, all_types_pattern, #data_from, #expression?, #factor?, #group?, #infix?, #initialize, #interpret, #interpreted_data_from, #literal?, #match?, #postfix?, #prefix?, #screen?, #skipping!, #supports_post_processing?, #trimming!

Constructor Details

This class inherits a constructor from DDQL::TokenType

Instance Method Details

#as_hash(data) ⇒ Object



271
272
273
274
# File 'lib/ddql/token_type.rb', line 271

def as_hash(data)
  return NullOperators.instance.as_hash(data) if data =~ NULL_TYPES
  {op: {op_symbol(data) => data}}
end

#comparison?(data) ⇒ Boolean

Returns:

  • (Boolean)


276
277
278
# File 'lib/ddql/token_type.rb', line 276

def comparison?(data)
  Operators.instance.cache[data]&.comparison?
end

#complex_comparison?(data) ⇒ Boolean

Returns:

  • (Boolean)


280
281
282
# File 'lib/ddql/token_type.rb', line 280

def complex_comparison?(data)
  Operators.instance.cache[data]&.complex_comparison?
end

#math?(data) ⇒ Boolean

Returns:

  • (Boolean)


284
285
286
# File 'lib/ddql/token_type.rb', line 284

def math?(data)
  Operators.instance.cache[data]&.math?
end

#parse(parser, token, expression: nil) ⇒ Object



288
289
290
291
292
293
294
# File 'lib/ddql/token_type.rb', line 288

def parse(parser, token, expression: nil)
  operator = Operators.instance.cache[token.op_data]
  if expression.nil? && !operator&.prefix?
    raise "expected op[#{operator&.name}] to be part of an expression"
  end
  operator.parse(parser, token, expression: expression)
end

#simple_comparison?(data) ⇒ Boolean

Returns:

  • (Boolean)


296
297
298
# File 'lib/ddql/token_type.rb', line 296

def simple_comparison?(data)
  Operators.instance.cache[data]&.simple_comparison?
end