Sha256: 3f7a10c6090767bbc0a02292b36f5e5ba1d2fec59fe6379dbe4438bf7a2da446

Contents?: true

Size: 725 Bytes

Versions: 2

Compression:

Stored size: 725 Bytes

Contents

class Operator

  OPERATORS = {}

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

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

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

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

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

  def to_sql
    raise NotImplementedError
  end

  def evaluate(attributes = {})
    raise NotImplementedError
  end

end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
lamep-0.2.1 lib/lamep/Expressions/operator.rb
lamep-0.2 lib/lamep/Expressions/operator.rb