to_html_fraction 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,6 +1,10 @@
1
1
  = to_html_fraction
2
2
 
3
- Description goes here.
3
+ Originally take from here http://snippets.dzone.com/posts/show/2323
4
+
5
+ Added some tests and turned it into a gem.
6
+
7
+ Also updated it so that it will round decimals to nearest 1/16th, because I never have need for fractions like 1/3, 3/5.
4
8
 
5
9
  == Note on Patches/Pull Requests
6
10
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.0
1
+ 0.2.0
@@ -1,39 +1,30 @@
1
1
  class Float
2
2
  def to_html_fraction
3
- fraction = case self.abs % 1.0
4
- when 0.5 then '½' # One half
5
-
6
- when 0.25 then '¼' # One quarter
7
- when 0.75 then '¾' # Three quarters
8
-
9
- when 0.33...0.333333333333333333 then '⅓' # One third
10
- when 0.66...0.666666666666666666 then '⅔' # Two thirds
11
-
12
- when 0.2 then '⅕' # One fifth
13
- when 0.4 then '⅖' # Two fifths
14
- when 0.6 then '⅗' # Three fifths
15
- when 0.8 then '⅘' # Four fifths
16
-
17
- when 0.16...0.166666666666666666 then '⅙' # One sixth
18
- when 0.83...0.833333333333333333 then '⅚' # Five sixths
19
-
20
- when 0.125 then '⅛' # One eighth
21
- when 0.375 then '⅜' # Three eighths
22
- when 0.625 then '⅝' # Five eighths
23
- when 0.875 then '⅞' # Seven eighths
24
-
25
- when 0.18...0.1875 then ' 3/16'
26
- when 0.0 then ''
27
- end
28
- if fraction
29
- body = case self.floor
3
+ body = case self.floor
30
4
  when -1 then '-'
31
5
  when 0 then ''
32
6
  else self.to_i.to_s
33
- end
34
- body + fraction
35
- else
36
- self.to_s
37
7
  end
8
+
9
+ fraction = case ((self.abs % 1.0) * 16).round.to_f / 16 #round to 1/16th precision.
10
+ when 0.0625 then ' 1/16'
11
+ when 0.125 then '⅛' # One eighth
12
+ when 0.1875 then ' 3/16'
13
+ when 0.25 then '¼' # One quarter
14
+ when 0.3125 then ' 5/16'
15
+ when 0.375 then '⅜' # Three eighths
16
+ when 0.4375 then ' 7/16'
17
+ when 0.5 then '½' # One half
18
+ when 0.5625 then ' 9/16'
19
+ when 0.625 then '⅝' # Five eighths
20
+ when 0.6875 then ' 11/16'
21
+ when 0.75 then '¾' # Three quarters
22
+ when 0.8125 then ' 13/16'
23
+ when 0.875 then '⅞' # Seven eighths
24
+ when 0.9375 then ' 15/16'
25
+ else ''
26
+ end
27
+
28
+ body + fraction
38
29
  end
39
30
  end
@@ -1,22 +1,31 @@
1
1
  require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
2
 
3
3
  describe "ToHtmlFraction" do
4
- it "should convert a fractional float to an html fraction" do
4
+ it "should convert a float to an html fraction" do
5
5
  # pending
6
+ 0.0625.to_html_fraction.should == ' 1/16'
6
7
  0.125.to_html_fraction.should == '⅛'
7
- 0.166.to_html_fraction.should == '⅙'
8
- 0.2.to_html_fraction.should == '⅕'
8
+ 0.1875.to_html_fraction.should == ' 3/16'
9
9
  0.25.to_html_fraction.should == '¼'
10
- 0.33.to_html_fraction.should == '⅓'
10
+ 0.3125.to_html_fraction.should == ' 5/16'
11
11
  0.375.to_html_fraction.should == '⅜'
12
- 0.4.to_html_fraction.should == '⅖'
12
+ 0.4375.to_html_fraction.should == ' 7/16'
13
13
  0.5.to_html_fraction.should == '½'
14
- 0.6.to_html_fraction.should == '⅗'
14
+ 0.5625.to_html_fraction.should == ' 9/16'
15
15
  0.625.to_html_fraction.should == '⅝'
16
- 0.66.to_html_fraction.should == '⅔'
16
+ 0.6875.to_html_fraction.should == ' 11/16'
17
17
  0.75.to_html_fraction.should == '¾'
18
- 0.8.to_html_fraction.should == '⅘'
19
- 0.833.to_html_fraction.should == '⅚'
18
+ 0.8125.to_html_fraction.should == ' 13/16'
20
19
  0.875.to_html_fraction.should == '⅞'
20
+ 0.9375.to_html_fraction.should == ' 15/16'
21
+
22
+ end
23
+
24
+ it "should round uncommon decimals to the nearest 1/16th" do
25
+ 0.166.to_html_fraction.should == ' 3/16'
26
+ 0.3.to_html_fraction.should == ' 5/16'
27
+ 0.503.to_html_fraction.should == '½'
28
+ 0.68.to_html_fraction.should == ' 11/16'
29
+ 0.975.to_html_fraction.should == ''
21
30
  end
22
- end
31
+ end
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{to_html_fraction}
8
- s.version = "0.1.0"
8
+ s.version = "0.2.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Torey Heinz"]
metadata CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
4
4
  prerelease: false
5
5
  segments:
6
6
  - 0
7
- - 1
7
+ - 2
8
8
  - 0
9
- version: 0.1.0
9
+ version: 0.2.0
10
10
  platform: ruby
11
11
  authors:
12
12
  - Torey Heinz