Sha256: 75c33afaeeff9a2454df78a4267072818c25315dd4f1b5e2123799c5f30c5a06

Contents?: true

Size: 583 Bytes

Versions: 4

Compression:

Stored size: 583 Bytes

Contents

module Dentaku
  module AST
    class Negation < Operation
      def initialize(node)
        @node = node
        fail "Negation requires numeric operand" unless valid_node?(node)
      end

      def value(context={})
        @node.value(context) * -1
      end

      def type
        :numeric
      end

      def self.arity
        1
      end

      def self.right_associative?
        true
      end

      def self.precedence
        40
      end

      private

      def valid_node?(node)
        node.is_a?(Identifier) || node.type == :numeric
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
dentaku-2.0.4 lib/dentaku/ast/negation.rb
dentaku-2.0.3 lib/dentaku/ast/negation.rb
dentaku-2.0.2 lib/dentaku/ast/negation.rb
dentaku-2.0.1 lib/dentaku/ast/negation.rb