45 lines
1.0 KiB
Ruby
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 |