Class: DDQL::LookupOperator
- Inherits:
-
AggOperator
- Object
- Operator
- AggOperator
- DDQL::LookupOperator
- Defined in:
- lib/ddql/lookup_operator.rb
Instance Attribute Summary
Attributes inherited from Operator
#associativity, #name, #precedence, #return_type, #symbol, #type
Instance Method Summary collapse
-
#initialize ⇒ LookupOperator
constructor
A new instance of LookupOperator.
- #parse(parser, _token, expression: nil) ⇒ Object
Methods inherited from AggOperator
Methods inherited from Operator
#any_type?, #boolean?, #comparison?, #complex_comparison?, #infix?, #left?, #math?, #pattern, #postfix?, #prefix?, #register, #right?, #simple_comparison?, #type?
Constructor Details
#initialize ⇒ LookupOperator
Returns a new instance of LookupOperator.
5 6 7 |
# File 'lib/ddql/lookup_operator.rb', line 5 def initialize super("LOOKUP BY", "Lookup", type: :infix, return_type: :string) end |
Instance Method Details
#parse(parser, _token, expression: nil) ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
# File 'lib/ddql/lookup_operator.rb', line 9 def parse(parser, _token, expression: nil) precedence = self.precedence precedence -= 1 if right? next_expression = parser.parse(precedence: precedence) foreign_value_factor = expression[:factor] foreign_key_factor = (next_expression.delete(:left) || next_expression)[:factor] { op_lookup_by: { foreign_key: {factor: foreign_key_factor}, foreign_value: {factor: foreign_value_factor}, }, } end |