hyde 0.0.2 → 0.0.3
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.
- data/Rakefile +1 -1
- data/lib/hyde.rb +64 -19
- data/test/hyde_test.rb +11 -0
- metadata +1 -1
data/Rakefile
CHANGED
@@ -17,7 +17,7 @@ DESCRIPTION = "unit converter of hyde"
|
|
17
17
|
RUBYFORGE_PROJECT = "lowreal"
|
18
18
|
HOMEPATH = "http://#{RUBYFORGE_PROJECT}.rubyforge.org"
|
19
19
|
BIN_FILES = %w( hyde )
|
20
|
-
VERS = "0.0.
|
20
|
+
VERS = "0.0.3"
|
21
21
|
|
22
22
|
REV = File.read(".svn/entries")[/committed-rev="(d+)"/, 1] rescue nil
|
23
23
|
CLEAN.include ['**/.*.sw?', '*.gem', '.config']
|
data/lib/hyde.rb
CHANGED
@@ -1,17 +1,66 @@
|
|
1
1
|
|
2
2
|
module Hyde
|
3
|
+
Units = {
|
4
|
+
# :metre => 1,
|
5
|
+
:m => 1,
|
6
|
+
:hyde => 1.56,
|
7
|
+
:barleycorn => 0.008467 ,
|
8
|
+
:inch => 0.0254 ,
|
9
|
+
:feet => 0.3048 ,
|
10
|
+
:yard => 0.9144 ,
|
11
|
+
:pole => 5.0292 ,
|
12
|
+
:chain => 20.1168 ,
|
13
|
+
:furlong => 201.168 ,
|
14
|
+
:mile => 1609.344 ,
|
15
|
+
:league => 4828.032 ,
|
16
|
+
}
|
3
17
|
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
18
|
+
Prefix = {
|
19
|
+
:Y => 1e24,
|
20
|
+
:Z => 1e21,
|
21
|
+
:E => 1e18,
|
22
|
+
:P => 1e15,
|
23
|
+
:T => 1e12,
|
24
|
+
:G => 1e9,
|
25
|
+
:M => 1e6,
|
26
|
+
:k => 1e3,
|
27
|
+
:h => 1e2,
|
28
|
+
:da => 1e1,
|
29
|
+
:d => 1e-1,
|
30
|
+
:c => 1e-2,
|
31
|
+
:m => 1e-3,
|
32
|
+
:u => 1e-6,
|
33
|
+
:n => 1e-9,
|
34
|
+
:p => 1e-12,
|
35
|
+
:f => 1e-15,
|
36
|
+
:a => 1e-18,
|
37
|
+
:z => 1e-21,
|
38
|
+
:y => 1e-24,
|
39
|
+
}
|
40
|
+
|
41
|
+
Units.each do |u, v|
|
42
|
+
module_eval <<-EOS
|
43
|
+
def metre_to_#{u}(m)
|
44
|
+
m / Units[:#{u}]
|
45
|
+
end
|
46
|
+
module_function :metre_to_#{u}
|
47
|
+
|
48
|
+
def #{u}_to_metre(t)
|
49
|
+
t * Units[:#{u}]
|
50
|
+
end
|
51
|
+
module_function :#{u}_to_metre
|
52
|
+
|
53
|
+
def hyde_to_#{u}(hyde)
|
54
|
+
metre_to_#{u}(hyde_to_metre(hyde))
|
55
|
+
end
|
56
|
+
module_function :hyde_to_#{u}
|
9
57
|
|
10
|
-
|
11
|
-
|
12
|
-
|
58
|
+
def #{u}_to_hyde(t)
|
59
|
+
metre_to_hyde(#{u}_to_metre(t))
|
60
|
+
end
|
61
|
+
module_function :#{u}_to_hyde
|
62
|
+
EOS
|
13
63
|
end
|
14
|
-
module_function :m_to_hyde
|
15
64
|
|
16
65
|
module NumericExtension
|
17
66
|
# convert to hyde taking self as m
|
@@ -29,17 +78,13 @@ module Hyde
|
|
29
78
|
end
|
30
79
|
|
31
80
|
def convert(a)
|
32
|
-
_, num, unit = */([\d.]+)(
|
81
|
+
_, num, prefix, unit = */([\d.]+)(#{Prefix.keys.join("|")})?(#{Units.keys.join("|")})/o.match(a)
|
33
82
|
num = num.to_f
|
34
|
-
|
35
|
-
|
36
|
-
"
|
37
|
-
|
38
|
-
"
|
39
|
-
when "km"
|
40
|
-
"#{Hyde.m_to_hyde(num * 1000)}hyde"
|
41
|
-
when "hyde"
|
42
|
-
"#{Hyde.hyde_to_m(num) * 100}cm"
|
83
|
+
num *= Prefix[prefix.to_sym] if prefix
|
84
|
+
if unit == "hyde"
|
85
|
+
"%.1fcm" % [Hyde.hyde_to_metre(num) * 100]
|
86
|
+
else
|
87
|
+
"%.1fhyde" % [Hyde.send("#{unit}_to_hyde", num)]
|
43
88
|
end
|
44
89
|
end
|
45
90
|
end
|
data/test/hyde_test.rb
CHANGED
@@ -3,8 +3,18 @@ require File.dirname(__FILE__) + '/test_helper.rb'
|
|
3
3
|
require "test/unit"
|
4
4
|
class HydeTest < Test::Unit::TestCase
|
5
5
|
def test_convert
|
6
|
+
assert_equal 1.56, Hyde.hyde_to_metre(1), "hyde must be 156cm"
|
6
7
|
assert_equal 1.56, Hyde.hyde_to_m(1), "hyde must be 156cm"
|
7
8
|
assert_equal 1, Hyde.m_to_hyde(1.56), "156cm must be hyde"
|
9
|
+
assert_equal 0.008467, Hyde.barleycorn_to_metre(1)
|
10
|
+
assert_equal 0.0254, Hyde.inch_to_metre(1)
|
11
|
+
assert_equal 0.3048, Hyde.feet_to_metre(1)
|
12
|
+
assert_equal 0.9144, Hyde.yard_to_metre(1)
|
13
|
+
assert_equal 5.0292, Hyde.pole_to_metre(1)
|
14
|
+
assert_equal 20.1168, Hyde.chain_to_metre(1)
|
15
|
+
assert_equal 201.168, Hyde.furlong_to_metre(1)
|
16
|
+
assert_equal 1609.344, Hyde.mile_to_metre(1)
|
17
|
+
assert_equal 4828.032, Hyde.league_to_metre(1)
|
8
18
|
end
|
9
19
|
|
10
20
|
def test_coreextension
|
@@ -17,5 +27,6 @@ class HydeTest < Test::Unit::TestCase
|
|
17
27
|
assert_equal "1.0hyde", c.convert("156cm")
|
18
28
|
assert_equal "1.0hyde", c.convert("1.56m")
|
19
29
|
assert_equal "1.0hyde", c.convert("0.00156km")
|
30
|
+
assert_equal "1.0hyde", c.convert("5.11811024feet")
|
20
31
|
end
|
21
32
|
end
|