Sha256: a03b45fcc2be22bef2ca0a127791993decef708f882216b8f63e51e2084f3f1c

Contents?: true

Size: 1.34 KB

Versions: 2

Compression:

Stored size: 1.34 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
    end

    class LessThan < Comparator
      def value(context = {})
        left.value(context) < right.value(context)
      end

      def operator
        return :<
      end
    end

    class LessThanOrEqual < Comparator
      def value(context = {})
        left.value(context) <= right.value(context)
      end

      def operator
        return :<=
      end
    end

    class GreaterThan < Comparator
      def value(context = {})
        left.value(context) > right.value(context)
      end

      def operator
        return :>
      end
    end

    class GreaterThanOrEqual < Comparator
      def value(context = {})
        left.value(context) >= right.value(context)
      end

      def operator
        return :>=
      end
    end

    class NotEqual < Comparator
      def value(context = {})
        left.value(context) != right.value(context)
      end

      def operator
        return :!=
      end
    end

    class Equal < Comparator
      def value(context = {})
        left.value(context) == right.value(context)
      end

      def operator
        return :==
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
dentaku-3.2.0 lib/dentaku/ast/comparators.rb
dentaku-3.1.0 lib/dentaku/ast/comparators.rb