project-eutopia/keisan

View on GitHub
lib/keisan/ast/modulo.rb

Summary

Maintainability
A
0 mins
Test Coverage
module Keisan
  module AST
    class Modulo < ArithmeticOperator
      def self.symbol
        :%
      end

      def evaluate(context = nil)
        children[1..-1].inject(children.first.evaluate(context)) {|total, child| total % child.evaluate(context)}
      end

      def value(context = nil)
        children_values = children.map {|child| child.value(context)}
        children_values[1..-1].inject(children_values[0], &:%)
      end
    end
  end
end