Class: RPNCalculator::OperationProcessor
- Inherits:
-
Object
- Object
- RPNCalculator::OperationProcessor
- Defined in:
- lib/rpn-calculator/operation_processor.rb
Instance Method Summary collapse
-
#initialize(operation_classes) ⇒ OperationProcessor
constructor
A new instance of OperationProcessor.
- #process(parsed_expression) ⇒ Object
Constructor Details
#initialize(operation_classes) ⇒ OperationProcessor
Returns a new instance of OperationProcessor.
3 4 5 6 |
# File 'lib/rpn-calculator/operation_processor.rb', line 3 def initialize(operation_classes) @operation_classes = operation_classes @operation_symbols = @operation_classes.keys end |
Instance Method Details
#process(parsed_expression) ⇒ Object
8 9 10 11 12 13 14 15 16 17 18 19 20 |
# File 'lib/rpn-calculator/operation_processor.rb', line 8 def process(parsed_expression) result_stack = parsed_expression.inject([]) do |stack, element| if operation_symbols.include?(element) result = operation_classes.fetch(element).operate(stack.pop(2)) return invalid_processor_result(result) unless result.valid? stack.push(result.result) else stack.push(as_float(element)) end stack end Result::Processor.new(result_stack) end |