Class: Operator

Inherits:
Object
  • Object
show all
Defined in:
lib/lamep/Expressions/operator.rb

Direct Known Subclasses

Arity1Operators, Arity2Operators

Constant Summary collapse

OPERATORS =
{}

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.exists?(operator_symbol) ⇒ Boolean

Returns:

  • (Boolean)


18
19
20
# File 'lib/lamep/Expressions/operator.rb', line 18

def self.exists?(operator_symbol)
  OPERATORS.key?(operator_symbol)
end

.factory!(operator_symbol) ⇒ Object



5
6
7
# File 'lib/lamep/Expressions/operator.rb', line 5

def self.factory!(operator_symbol)
  operator(operator_symbol)[:class_name]
end

.operator(operator_symbol) ⇒ Object



13
14
15
16
# File 'lib/lamep/Expressions/operator.rb', line 13

def self.operator(operator_symbol)
  fail "Unregistered operator: #{operator_symbol}" unless exists?(operator_symbol)
  OPERATORS[operator_symbol]
end

.precedence!(operator_symbol) ⇒ Object



9
10
11
# File 'lib/lamep/Expressions/operator.rb', line 9

def self.precedence!(operator_symbol)
  operator(operator_symbol)[:precedence]
end

.register(operator_symbol, class_name, precedence) ⇒ Object



22
23
24
# File 'lib/lamep/Expressions/operator.rb', line 22

def self.register(operator_symbol, class_name, precedence)
  OPERATORS[operator_symbol] = { class_name: class_name, precedence: precedence }
end

Instance Method Details

#to_sqlObject

Raises:

  • (NotImplementedError)


26
27
28
# File 'lib/lamep/Expressions/operator.rb', line 26

def to_sql
  raise NotImplementedError
end