class CalculatorController < ApplicationController def index end def calculate input = params[:input] output_unit = params[:output_unit] parsed_input = nil original_number = nil data = {errors: {}, output: ''} if input.present? begin parsed_input = UnitConversion.parse(input) original_number = parsed_input.value rescue UnitConversion::UnparseableUnitError => e data[:errors][:input] = [e.message] end if parsed_input.present? && output_unit.present? begin parsed_input = parsed_input.convert_to output_unit rescue Unitwise::ExpressionError => e data[:errors][:output_unit] = [e.message] end end if parsed_input puts parsed_input.value puts parsed_input.unit data[:output] = UnitConversion.auto_unit(UnitConversion.quantity_format(parsed_input.value, original_number), parsed_input.unit.to_s) end else data[:errors][:input] = ['Invalid input'] end render json: data end end