lib/models/glimmer/calculator/command/operation.rb in glimmer-cs-calculator-1.0.0 vs lib/models/glimmer/calculator/command/operation.rb in glimmer-cs-calculator-1.0.1
- old
+ new
@@ -1,11 +1,26 @@
module Glimmer
class Calculator
class Command
class Operation < Command
- # Calculate operation result using number1 and number2 attributes
+ def execute
+ if number1 && number2 && operation && !last_command.equals?
+ self.result = operation.calculate.to_s
+ self.number1 = self.result
+ else
+ self.result = last_result || '0'
+ self.operation = self
+ end
+ end
+
def calculate
- raise 'Not implemented! A subclass must implement to calculate operation using number1 and number2 attributes'
+ calculation_result = number1.send(operation_method, number2)
+ calculation_result.to_s.match(/\.0+$/) ? calculation_result.to_i : calculation_result
+ end
+
+ # Subclasses must implement to indicate operation method on number (e.g. :+ for addition)
+ def operation_method
+ raise 'Not implemented!'
end
end
end
end
end