Class: RPNCalculator::InputProcessor

Inherits:
Object
  • Object
show all
Defined in:
lib/rpn-calculator/input_processor.rb

Instance Method Summary collapse

Constructor Details

#initialize(operation_processor, input_validator, input_parser) ⇒ InputProcessor

Returns a new instance of InputProcessor.



3
4
5
6
7
# File 'lib/rpn-calculator/input_processor.rb', line 3

def initialize(operation_processor, input_validator, input_parser)
  @input_validator     = input_validator
  @input_parser        = input_parser
  @operation_processor = operation_processor
end

Instance Method Details

#process(input_expression, previous_operations = []) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/rpn-calculator/input_processor.rb', line 9

def process(input_expression, previous_operations = [])
  validator_result = input_validator.validate(input_expression)
  return invalid_processor_result(validator_result) unless validator_result.valid?

  parser_result = input_parser.parse(input_expression)
  return invalid_processor_result(parser_result) unless parser_result.valid?

  operation_result = operation_processor.process(
    previous_operations + parser_result.result
  )
  return invalid_processor_result(operation_result) unless operation_result.valid?

  Result::Processor.new(operation_result.result)
end