parsley/app/controllers/calculator_controller.rb
2016-01-31 00:00:32 -06:00

45 lines
1.0 KiB
Ruby

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