hyde 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- 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
|