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