class DDQL::LookupOperator

Public Class Methods

new() click to toggle source
Calls superclass method DDQL::AggOperator::new
# File lib/ddql/lookup_operator.rb, line 5
def initialize
  super("LOOKUP BY", "Lookup", type: :infix, return_type: :string)
end

Public Instance Methods

parse(parser, _token, expression: nil) click to toggle source
# 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