Sha256: 40b56fab9dcb57514f4e6d54d329b502307baaabb32e7372eefabfba1cf6533a
Contents?: true
Size: 1.67 KB
Versions: 9
Compression:
Stored size: 1.67 KB
Contents
require_relative './operation' module Dentaku module AST class Comparator < Operation def self.precedence 5 end def type :logical end def operator raise NotImplementedError end private def value yield rescue ::ArgumentError => argument_error raise Dentaku::ArgumentError, argument_error.message rescue NoMethodError => no_method_error raise Dentaku::Error, no_method_error.message end end class LessThan < Comparator def value(context = {}) super() { left.value(context) < right.value(context) } end def operator return :< end end class LessThanOrEqual < Comparator def value(context = {}) super() { left.value(context) <= right.value(context) } end def operator return :<= end end class GreaterThan < Comparator def value(context = {}) super() { left.value(context) > right.value(context) } end def operator return :> end end class GreaterThanOrEqual < Comparator def value(context = {}) super() { left.value(context) >= right.value(context) } end def operator return :>= end end class NotEqual < Comparator def value(context = {}) super() { left.value(context) != right.value(context) } end def operator return :!= end end class Equal < Comparator def value(context = {}) super() { left.value(context) == right.value(context) } end def operator return :== end end end end
Version data entries
9 entries across 9 versions & 1 rubygems