Class: Dentaku::BinaryOperation

Inherits:
Object
  • Object
show all
Defined in:
lib/dentaku/binary_operation.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(left, right) ⇒ BinaryOperation

Returns a new instance of BinaryOperation.



7
8
9
10
# File 'lib/dentaku/binary_operation.rb', line 7

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

Instance Attribute Details

#leftObject (readonly)

Returns the value of attribute left.



5
6
7
# File 'lib/dentaku/binary_operation.rb', line 5

def left
  @left
end

#rightObject (readonly)

Returns the value of attribute right.



5
6
7
# File 'lib/dentaku/binary_operation.rb', line 5

def right
  @right
end

Instance Method Details

#addObject



13
# File 'lib/dentaku/binary_operation.rb', line 13

def add;      [:numeric, left + right];  end

#andObject



32
# File 'lib/dentaku/binary_operation.rb', line 32

def and;      [:logical, left && right]; end

#divideObject



17
18
19
20
21
# File 'lib/dentaku/binary_operation.rb', line 17

def divide
  quotient, remainder = left.divmod(right)
  return [:numeric, quotient] if remainder == 0
  [:numeric, BigDecimal.new(left.to_s) / BigDecimal.new(right.to_s)]
end

#eqObject



30
# File 'lib/dentaku/binary_operation.rb', line 30

def eq;       [:logical, left == right]; end

#geObject



26
# File 'lib/dentaku/binary_operation.rb', line 26

def ge;       [:logical, left >= right]; end

#gtObject



28
# File 'lib/dentaku/binary_operation.rb', line 28

def gt;       [:logical, left >  right]; end

#leObject



25
# File 'lib/dentaku/binary_operation.rb', line 25

def le;       [:logical, left <= right]; end

#ltObject



27
# File 'lib/dentaku/binary_operation.rb', line 27

def lt;       [:logical, left <  right]; end

#modObject



23
# File 'lib/dentaku/binary_operation.rb', line 23

def mod;      [:numeric, left % right]; end

#multiplyObject



15
# File 'lib/dentaku/binary_operation.rb', line 15

def multiply; [:numeric, left * right];  end

#neObject



29
# File 'lib/dentaku/binary_operation.rb', line 29

def ne;       [:logical, left != right]; end

#orObject



33
# File 'lib/dentaku/binary_operation.rb', line 33

def or;       [:logical, left || right]; end

#powObject



12
# File 'lib/dentaku/binary_operation.rb', line 12

def pow;      [:numeric, left ** right]; end

#subtractObject



14
# File 'lib/dentaku/binary_operation.rb', line 14

def subtract; [:numeric, left - right];  end