Sha256: 6661ee7ddc5238b90051f3b726beaf86079e7673e3e890a07e6d1a96cd3aba03

Contents?: true

Size: 573 Bytes

Versions: 3

Compression:

Stored size: 573 Bytes

Contents

# frozen_string_literal: true

require_relative 'identity'

module Basic101

  class BinaryOperation

    include Identity

    def initialize(operator, right)
      @operator = operator
      @right = right
    end

    def operate(left, runtime)
      if @operator.is_a?(Symbol)
        left_value = left.eval(runtime)
        right_value = @right.eval(runtime)
        left_value.public_send(@operator, right_value)
      else
        @operator.operate(left, @right, runtime)
      end
    end

    protected

    def state
      [@operator, @right]
    end

  end

end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
basic101-1.0.2 lib/basic101/binary_operation.rb
basic101-1.0.1 lib/basic101/binary_operation.rb
basic101-1.0.0 lib/basic101/binary_operation.rb