From 517bf35705e3a4d7bfebd1edfa40d1e383de57f2 Mon Sep 17 00:00:00 2001 From: Dan Elbert Date: Fri, 15 Jan 2016 16:15:50 -0600 Subject: [PATCH] Unit conversion --- app/models/unit_conversion.rb | 4 ++++ spec/models/unit_conversion_spec.rb | 2 ++ 2 files changed, 6 insertions(+) diff --git a/app/models/unit_conversion.rb b/app/models/unit_conversion.rb index d5c2846..3e2b1f1 100644 --- a/app/models/unit_conversion.rb +++ b/app/models/unit_conversion.rb @@ -119,6 +119,10 @@ module UnitConversion rational_val = converted.to_r.rationalize(0.001) if rational_val.denominator == 1 rational_val.to_i.to_s + elsif rational_val.denominator < rational_val.numerator.abs + whole = rational_val.floor + fraction = rational_val - whole + "#{whole} #{fraction}" else rational_val.to_s end diff --git a/spec/models/unit_conversion_spec.rb b/spec/models/unit_conversion_spec.rb index 2abe873..a84b726 100644 --- a/spec/models/unit_conversion_spec.rb +++ b/spec/models/unit_conversion_spec.rb @@ -38,6 +38,8 @@ RSpec.describe UnitConversion do expect(UnitConversion.convert('8', '1', 'tablespoon', 'cup')).to eq '1/2' expect(UnitConversion.convert('1', '1', 'tablespoon', 'cup')).to eq '1/16' expect(UnitConversion.convert('2.0', '1', 'tablespoon', 'cup')).to eq '0.125' + expect(UnitConversion.convert('2/3', '1', 'tablespoon', 'teaspoons')).to eq '2' + expect(UnitConversion.convert('2', '4', 'teaspoons', 'tablespoons')).to eq '2 2 /3' end it 'scales odd units without conversion' do