to_html_fraction 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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