ruby-units 1.3.0.a → 1.3.1
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/CHANGELOG.txt +212 -0
- data/Gemfile +8 -0
- data/Manifest.txt +19 -0
- data/RakeFile +83 -0
- data/VERSION +1 -0
- data/lib/ruby-units.rb +14 -0
- data/lib/ruby_units.rb +14 -0
- data/lib/ruby_units/array.rb +9 -0
- data/lib/ruby_units/cache.rb +20 -0
- data/lib/ruby_units/date.rb +53 -0
- data/lib/ruby_units/fixnum.rb +20 -0
- data/lib/ruby_units/math.rb +101 -0
- data/lib/ruby_units/numeric.rb +8 -0
- data/lib/ruby_units/object.rb +8 -0
- data/lib/ruby_units/string.rb +126 -0
- data/lib/ruby_units/time.rb +71 -0
- data/lib/ruby_units/unit.rb +1272 -0
- data/lib/ruby_units/unit_definitions.rb +248 -0
- data/lib/ruby_units/version.rb +5 -0
- data/ruby-units.gemspec +83 -0
- data/spec/ruby-units/string_spec.rb +1 -5
- data/spec/ruby-units/unit_spec.rb +34 -1
- metadata +27 -18
@@ -0,0 +1,248 @@
|
|
1
|
+
class Unit < Numeric
|
2
|
+
UNIT_DEFINITIONS = {
|
3
|
+
# prefixes
|
4
|
+
'<googol>' => [%w{googol}, 1e100, :prefix],
|
5
|
+
'<kibi>' => [%w{Ki Kibi kibi}, 2**10, :prefix],
|
6
|
+
'<mebi>' => [%w{Mi Mebi mebi}, 2**20, :prefix],
|
7
|
+
'<gibi>' => [%w{Gi Gibi gibi}, 2**30, :prefix],
|
8
|
+
'<tebi>' => [%w{Ti Tebi tebi}, 2**40, :prefix],
|
9
|
+
'<pebi>' => [%w{Pi Pebi pebi}, 2**50, :prefix],
|
10
|
+
'<exi>' => [%w{Ei Exi exi}, 2**60, :prefix],
|
11
|
+
'<zebi>' => [%w{Zi Zebi zebi}, 2**70, :prefix],
|
12
|
+
'<yebi>' => [%w{Yi Yebi yebi}, 2**80, :prefix],
|
13
|
+
'<yotta>' => [%w{Y Yotta yotta}, 1e24, :prefix],
|
14
|
+
'<zetta>' => [%w{Z Zetta zetta}, 1e21, :prefix],
|
15
|
+
'<exa>' => [%w{E Exa exa}, 1e18, :prefix],
|
16
|
+
'<peta>' => [%w{P Peta peta}, 1e15, :prefix],
|
17
|
+
'<tera>' => [%w{T Tera tera}, 1e12, :prefix],
|
18
|
+
'<giga>' => [%w{G Giga giga}, 1e9, :prefix],
|
19
|
+
'<mega>' => [%w{M Mega mega}, 1e6, :prefix],
|
20
|
+
'<kilo>' => [%w{k kilo}, 1e3, :prefix],
|
21
|
+
'<hecto>' => [%w{h Hecto hecto}, 1e2, :prefix],
|
22
|
+
'<deca>' => [%w{da Deca deca deka}, 1e1, :prefix],
|
23
|
+
'<deci>' => [%w{d Deci deci}, Rational(1,1e1), :prefix],
|
24
|
+
'<centi>' => [%w{c Centi centi}, Rational(1,1e2), :prefix],
|
25
|
+
'<milli>' => [%w{m Milli milli}, Rational(1,1e3), :prefix],
|
26
|
+
'<micro>' => [%w{u Micro micro}, Rational(1,1e6), :prefix],
|
27
|
+
'<nano>' => [%w{n Nano nano}, Rational(1,1e9), :prefix],
|
28
|
+
'<pico>' => [%w{p Pico pico}, Rational(1,1e12), :prefix],
|
29
|
+
'<femto>' => [%w{f Femto femto}, Rational(1,1e15), :prefix],
|
30
|
+
'<atto>' => [%w{a Atto atto}, Rational(1,1e18), :prefix],
|
31
|
+
'<zepto>' => [%w{z Zepto zepto}, Rational(1,1e21), :prefix],
|
32
|
+
'<yocto>' => [%w{y Yocto yocto}, Rational(1,1e24), :prefix],
|
33
|
+
'<1>' => [%w{1},1,:prefix],
|
34
|
+
|
35
|
+
# length units
|
36
|
+
'<meter>' => [%w{m meter meters metre metres}, 1, :length, %w{<meter>} ],
|
37
|
+
'<inch>' => [%w{in inch inches "}, Rational(254,10_000), :length, %w{<meter>}],
|
38
|
+
'<foot>' => [%w{ft foot feet '}, Rational(3048,10_000), :length, %w{<meter>}],
|
39
|
+
'<yard>' => [%w{yd yard yards}, 0.9144, :length, %w{<meter>}],
|
40
|
+
'<mile>' => [%w{mi mile miles}, 1609.344, :length, %w{<meter>}],
|
41
|
+
'<naut-mile>' => [%w{nmi}, 1852, :length, %w{<meter>}],
|
42
|
+
'<league>'=> [%w{league leagues}, 4828, :length, %w{<meter>}],
|
43
|
+
'<furlong>'=> [%w{furlong furlongs}, 201.2, :length, %w{<meter>}],
|
44
|
+
'<rod>' => [%w{rd rod rods}, 5.029, :length, %w{<meter>}],
|
45
|
+
'<mil>' => [%w{mil mils}, 0.0000254, :length, %w{<meter>}],
|
46
|
+
'<angstrom>' =>[%w{ang angstrom angstroms}, Rational(1,1e10), :length, %w{<meter>}],
|
47
|
+
'<fathom>' => [%w{fathom fathoms}, 1.829, :length, %w{<meter>}],
|
48
|
+
'<pica>' => [%w{pica picas}, 0.004217, :length, %w{<meter>}],
|
49
|
+
'<point>' => [%w{pt point points}, 0.0003514, :length, %w{<meter>}],
|
50
|
+
'<redshift>' => [%w{z red-shift}, 1.302773e26, :length, %w{<meter>}],
|
51
|
+
'<AU>' => [%w{AU astronomical-unit}, 149597900000, :length, %w{<meter>}],
|
52
|
+
'<light-second>'=>[%w{ls light-second}, 299792500, :length, %w{<meter>}],
|
53
|
+
'<light-minute>'=>[%w{lmin light-minute}, 17987550000, :length, %w{<meter>}],
|
54
|
+
'<light-year>' => [%w{ly light-year}, 9460528000000000, :length, %w{<meter>}],
|
55
|
+
'<parsec>' => [%w{pc parsec parsecs}, 30856780000000000, :length, %w{<meter>}],
|
56
|
+
|
57
|
+
#mass
|
58
|
+
'<kilogram>' => [%w{kg kilogram kilograms}, 1, :mass, %w{<kilogram>}],
|
59
|
+
'<AMU>' => [%w{u AMU amu}, 6.0221415e26, :mass, %w{<kilogram>}],
|
60
|
+
'<dalton>' => [%w{Da Dalton Daltons dalton daltons}, 6.0221415e26, :mass, %w{<kilogram>}],
|
61
|
+
'<slug>' => [%w{slug slugs}, 14.5939029, :mass, %w{<kilogram>}],
|
62
|
+
'<short-ton>' => [%w{tn ton}, 907.18474, :mass, %w{<kilogram>}],
|
63
|
+
'<metric-ton>'=>[%w{tonne}, 1000, :mass, %w{<kilogram>}],
|
64
|
+
'<carat>' => [%w{ct carat carats}, 0.0002, :mass, %w{<kilogram>}],
|
65
|
+
'<pound>' => [%w{lbs lb pound pounds #}, Rational(8171193714040401,18014398509481984), :mass, %w{<kilogram>}],
|
66
|
+
'<ounce>' => [%w{oz ounce ounces}, Rational(8171193714040401,288230376151711744), :mass, %w{<kilogram>}],
|
67
|
+
'<gram>' => [%w{g gram grams gramme grammes},Rational(1,1e3),:mass, %w{<kilogram>}],
|
68
|
+
|
69
|
+
#area
|
70
|
+
'<hectare>'=>[%w{hectare}, 10000, :area, %w{<meter> <meter>}],
|
71
|
+
'<acre>'=>[%w(acre acres), 4046.85642, :area, %w{<meter> <meter>}],
|
72
|
+
'<sqft>'=>[%w(sqft), 1, :area, %w{<feet> <feet>}],
|
73
|
+
|
74
|
+
#volume
|
75
|
+
'<liter>' => [%w{l L liter liters litre litres}, Rational(1,1e3), :volume, %w{<meter> <meter> <meter>}],
|
76
|
+
'<gallon>'=> [%w{gal gallon gallons}, 0.0037854118, :volume, %w{<meter> <meter> <meter>}],
|
77
|
+
'<quart>'=> [%w{qt quart quarts}, 0.00094635295, :volume, %w{<meter> <meter> <meter>}],
|
78
|
+
'<pint>'=> [%w{pt pint pints}, 0.000473176475, :volume, %w{<meter> <meter> <meter>}],
|
79
|
+
'<cup>'=> [%w{cu cup cups}, 0.000236588238, :volume, %w{<meter> <meter> <meter>}],
|
80
|
+
'<fluid-ounce>'=> [%w{floz fluid-ounce}, 2.95735297e-5, :volume, %w{<meter> <meter> <meter>}],
|
81
|
+
'<tablespoon>'=> [%w{tbs tablespoon tablespoons}, 1.47867648e-5, :volume, %w{<meter> <meter> <meter>}],
|
82
|
+
'<teaspoon>'=> [%w{tsp teaspoon teaspoons}, 4.92892161e-6, :volume, %w{<meter> <meter> <meter>}],
|
83
|
+
|
84
|
+
#speed
|
85
|
+
'<kph>' => [%w{kph}, 0.277777778, :speed, %w{<meter>}, %w{<second>}],
|
86
|
+
'<mph>' => [%w{mph}, 0.44704, :speed, %w{<meter>}, %w{<second>}],
|
87
|
+
'<knot>' => [%w{kt kn kts knot knots}, 0.514444444, :speed, %w{<meter>}, %w{<second>}],
|
88
|
+
'<fps>' => [%w{fps}, 0.3048, :speed, %w{<meter>}, %w{<second>}],
|
89
|
+
|
90
|
+
#acceleration
|
91
|
+
'<gee>' => [%w{gee}, 9.80655, :acceleration, %w{<meter>}, %w{<second> <second>}],
|
92
|
+
|
93
|
+
#temperature_difference
|
94
|
+
'<kelvin>' => [%w{degK kelvin}, 1, :temperature, %w{<kelvin>}],
|
95
|
+
'<celsius>' => [%w{degC celsius celsius centigrade}, 1, :temperature, %w{<kelvin>}],
|
96
|
+
'<fahrenheit>' => [%w{degF fahrenheit}, Rational(1,1.8), :temperature, %w{<kelvin>}],
|
97
|
+
'<rankine>' => [%w{degR rankine}, Rational(1,1.8), :temperature, %w{<kelvin>}],
|
98
|
+
'<temp-K>' => [%w{tempK}, 1, :temperature, %w{<temp-K>}],
|
99
|
+
'<temp-C>' => [%w{tempC}, 1, :temperature, %w{<temp-K>}],
|
100
|
+
'<temp-F>' => [%w{tempF}, Rational(1,1.8), :temperature, %w{<temp-K>}],
|
101
|
+
'<temp-R>' => [%w{tempR}, Rational(1,1.8), :temperature, %w{<temp-K>}],
|
102
|
+
|
103
|
+
#time
|
104
|
+
'<second>'=> [%w{s sec second seconds}, 1, :time, %w{<second>}],
|
105
|
+
'<minute>'=> [%w{min minute minutes}, 60, :time, %w{<second>}],
|
106
|
+
'<hour>'=> [%w{h hr hrs hour hours}, 3600, :time, %w{<second>}],
|
107
|
+
'<day>'=> [%w{d day days}, 3600*24, :time, %w{<second>}],
|
108
|
+
'<week>'=> [%w{wk week weeks}, 7*3600*24, :time, %w{<second>}],
|
109
|
+
'<fortnight>'=> [%w{fortnight fortnights}, 1209600, :time, %W{<second>}],
|
110
|
+
'<year>'=> [%w{y yr year years annum}, 31556926, :time, %w{<second>}],
|
111
|
+
'<decade>'=>[%w{decade decades}, 315569260, :time, %w{<second>}],
|
112
|
+
'<century>'=>[%w{century centuries}, 3155692600, :time, %w{<second>}],
|
113
|
+
|
114
|
+
#pressure
|
115
|
+
'<pascal>' => [%w{Pa pascal Pascal}, 1, :pressure, %w{<kilogram>},%w{<meter> <second> <second>}],
|
116
|
+
'<bar>' => [%w{bar bars}, 100000, :pressure, %w{<kilogram>},%w{<meter> <second> <second>}],
|
117
|
+
'<mmHg>' => [%w{mmHg}, 133.322368,:pressure, %w{<kilogram>},%w{<meter> <second> <second>}],
|
118
|
+
'<inHg>' => [%w{inHg}, 3386.3881472,:pressure, %w{<kilogram>},%w{<meter> <second> <second>}],
|
119
|
+
'<torr>' => [%w{torr}, 133.322368,:pressure, %w{<kilogram>},%w{<meter> <second> <second>}],
|
120
|
+
'<bar>' => [%w{bar}, 100000,:pressure, %w{<kilogram>},%w{<meter> <second> <second>}],
|
121
|
+
'<atm>' => [%w{atm ATM atmosphere atmospheres}, 101325,:pressure, %w{<kilogram>},%w{<meter> <second> <second>}],
|
122
|
+
'<psi>' => [%w{psi}, 6894.76,:pressure, %w{<kilogram>},%w{<meter> <second> <second>}],
|
123
|
+
'<cmh2o>' => [%w{cmH2O}, 98.0638,:pressure, %w{<kilogram>},%w{<meter> <second> <second>}],
|
124
|
+
'<inh2o>' => [%w{inH2O}, 249.082052,:pressure, %w{<kilogram>},%w{<meter> <second> <second>}],
|
125
|
+
|
126
|
+
#viscosity
|
127
|
+
'<poise>' => [%w{P poise}, Rational(1,10), :viscosity, %w{<kilogram>},%w{<meter> <second>} ],
|
128
|
+
'<stokes>' => [%w{St stokes}, Rational(1,1e4), :viscosity, %w{<meter> <meter>}, %w{<second>}],
|
129
|
+
|
130
|
+
#substance
|
131
|
+
'<mole>' => [%w{mol mole}, 1, :substance, %w{<mole>}],
|
132
|
+
|
133
|
+
#concentration
|
134
|
+
'<molar>' => [%w{M molar}, 1000, :concentration, %w{<mole>}, %w{<meter> <meter> <meter>}],
|
135
|
+
'<wtpercent>' => [%w{wt% wtpercent}, 10, :concentration, %w{<kilogram>}, %w{<meter> <meter> <meter>}],
|
136
|
+
|
137
|
+
#activity
|
138
|
+
'<katal>' => [%w{kat katal Katal}, 1, :activity, %w{<mole>}, %w{<second>}],
|
139
|
+
'<unit>' => [%w{U enzUnit}, 16.667e-16, :activity, %w{<mole>}, %w{<second>}],
|
140
|
+
|
141
|
+
#capacitance
|
142
|
+
'<farad>' => [%w{F farad Farad}, 1, :capacitance, %w{<farad>}],
|
143
|
+
|
144
|
+
#charge
|
145
|
+
'<coulomb>' => [%w{C coulomb Coulomb}, 1, :charge, %w{<ampere> <second>}],
|
146
|
+
|
147
|
+
#current
|
148
|
+
'<ampere>' => [%w{A Ampere ampere amp amps}, 1, :current, %w{<ampere>}],
|
149
|
+
|
150
|
+
#conductance
|
151
|
+
'<siemens>' => [%w{S Siemens siemens}, 1, :resistance, %w{<second> <second> <second> <ampere> <ampere>}, %w{<kilogram> <meter> <meter>}],
|
152
|
+
|
153
|
+
#inductance
|
154
|
+
'<henry>' => [%w{H Henry henry}, 1, :inductance, %w{<meter> <meter> <kilogram>}, %w{<second> <second> <ampere> <ampere>}],
|
155
|
+
|
156
|
+
#potential
|
157
|
+
'<volt>' => [%w{V Volt volt volts}, 1, :potential, %w{<meter> <meter> <kilogram>}, %w{<second> <second> <second> <ampere>}],
|
158
|
+
|
159
|
+
#resistance
|
160
|
+
'<ohm>' => [%w{Ohm ohm}, 1, :resistance, %w{<meter> <meter> <kilogram>},%w{<second> <second> <second> <ampere> <ampere>}],
|
161
|
+
|
162
|
+
#magnetism
|
163
|
+
'<weber>' => [%w{Wb weber webers}, 1, :magnetism, %w{<meter> <meter> <kilogram>}, %w{<second> <second> <ampere>}],
|
164
|
+
'<tesla>' => [%w{T tesla teslas}, 1, :magnetism, %w{<kilogram>}, %w{<second> <second> <ampere>}],
|
165
|
+
'<gauss>' => [%w{G gauss}, Rational(1,1e4), :magnetism, %w{<kilogram>}, %w{<second> <second> <ampere>}],
|
166
|
+
'<maxwell>' => [%w{Mx maxwell maxwells}, Rational(1,1e8), :magnetism, %w{<meter> <meter> <kilogram>}, %w{<second> <second> <ampere>}],
|
167
|
+
'<oersted>' => [%w{Oe oersted oersteds}, 250.0/Math::PI, :magnetism, %w{<ampere>}, %w{<meter>}],
|
168
|
+
|
169
|
+
#energy
|
170
|
+
'<joule>' => [%w{J joule Joule joules}, 1, :energy, %w{<meter> <meter> <kilogram>}, %w{<second> <second>}],
|
171
|
+
'<erg>' => [%w{erg ergs}, Rational(1,1e7), :energy, %w{<meter> <meter> <kilogram>}, %w{<second> <second>}],
|
172
|
+
'<btu>' => [%w{BTU btu BTUs}, 1055.056, :energy, %w{<meter> <meter> <kilogram>}, %w{<second> <second>}],
|
173
|
+
'<calorie>' => [%w{cal calorie calories}, 4.18400, :energy,%w{<meter> <meter> <kilogram>}, %w{<second> <second>}],
|
174
|
+
'<Calorie>' => [%w{Cal Calorie Calories}, 4184.00, :energy,%w{<meter> <meter> <kilogram>}, %w{<second> <second>}],
|
175
|
+
'<therm-US>' => [%w{th therm therms Therm}, 105480400, :energy,%w{<meter> <meter> <kilogram>}, %w{<second> <second>}],
|
176
|
+
|
177
|
+
#force
|
178
|
+
'<newton>' => [%w{N Newton newton}, 1, :force, %w{<kilogram> <meter>}, %w{<second> <second>}],
|
179
|
+
'<dyne>' => [%w{dyn dyne}, Rational(1,1e5), :force, %w{<kilogram> <meter>}, %w{<second> <second>}],
|
180
|
+
'<pound-force>' => [%w{lbf pound-force}, 4.448222, :force, %w{<kilogram> <meter>}, %w{<second> <second>}],
|
181
|
+
|
182
|
+
#frequency
|
183
|
+
'<hertz>' => [%w{Hz hertz Hertz}, 1, :frequency, %w{<1>}, %{<second>}],
|
184
|
+
|
185
|
+
#angle
|
186
|
+
'<radian>' =>[%w{rad radian radian radians}, 1, :angle, %w{<radian>}],
|
187
|
+
'<degree>' =>[%w{deg degree degrees}, Math::PI / 180.0, :angle, %w{<radian>}],
|
188
|
+
'<grad>' =>[%w{grad gradian grads}, Math::PI / 200.0, :angle, %w{<radian>}],
|
189
|
+
'<steradian>' => [%w{sr steradian steradians}, 1, :solid_angle, %w{<steradian>}],
|
190
|
+
|
191
|
+
#rotation
|
192
|
+
'<rotation>' => [%w{rotation}, 2.0*Math::PI, :angle, %w{<radian>}],
|
193
|
+
'<rpm>' =>[%w{rpm}, 2.0*Math::PI / 60.0, :angular_velocity, %w{<radian>}, %w{<second>}],
|
194
|
+
|
195
|
+
#memory
|
196
|
+
'<byte>' =>[%w{B byte}, 1, :memory, %w{<byte>}],
|
197
|
+
'<bit>' =>[%w{b bit}, 0.125, :memory, %w{<byte>}],
|
198
|
+
|
199
|
+
#currency
|
200
|
+
'<dollar>'=>[%w{USD dollar}, 1, :currency, %w{<dollar>}],
|
201
|
+
'<cents>' =>[%w{cents}, Rational(1,100), :currency, %w{<dollar>}],
|
202
|
+
|
203
|
+
#luminosity
|
204
|
+
'<candela>' => [%w{cd candela}, 1, :luminosity, %w{<candela>}],
|
205
|
+
'<lumen>' => [%w{lm lumen}, 1, :luminous_power, %w{<candela> <steradian>}],
|
206
|
+
'<lux>' =>[%w{lux}, 1, :illuminance, %w{<candela> <steradian>}, %w{<meter> <meter>}],
|
207
|
+
|
208
|
+
#power
|
209
|
+
'<watt>' => [%w{W watt watts}, 1, :power, %w{<kilogram> <meter> <meter>}, %w{<second> <second> <second>}],
|
210
|
+
'<horsepower>' => [%w{hp horsepower}, 745.699872, :power, %w{<kilogram> <meter> <meter>}, %w{<second> <second> <second>}],
|
211
|
+
|
212
|
+
#radiation
|
213
|
+
'<gray>' => [%w{Gy gray grays}, 1, :radiation, %w{<meter> <meter>}, %w{<second> <second>}],
|
214
|
+
'<roentgen>' => [%w{R roentgen}, 0.009330, :radiation, %w{<meter> <meter>}, %w{<second> <second>}],
|
215
|
+
'<sievert>' => [%w{Sv sievert sieverts}, 1, :radiation, %w{<meter> <meter>}, %w{<second> <second>}],
|
216
|
+
'<becquerel>' => [%w{Bq bequerel bequerels}, 1, :radiation, %w{<1>},%w{<second>}],
|
217
|
+
'<curie>' => [%w{Ci curie curies}, 3.7e10, :radiation, %w{<1>},%w{<second>}],
|
218
|
+
|
219
|
+
# rate
|
220
|
+
'<cpm>' => [%w{cpm}, Rational(1,60), :rate, %w{<count>},%w{<second>}],
|
221
|
+
'<dpm>' => [%w{dpm}, Rational(1,60), :rate, %w{<count>},%w{<second>}],
|
222
|
+
'<bpm>' => [%w{bpm}, Rational(1,60), :rate, %w{<count>},%w{<second>}],
|
223
|
+
|
224
|
+
#resolution / typography
|
225
|
+
'<dot>' => [%w{dot dots}, 1, :resolution, %w{<each>}],
|
226
|
+
'<pixel>' => [%w{pixel px}, 1, :resolution, %w{<each>}],
|
227
|
+
'<ppi>' => [%w{ppi}, 1, :resolution, %w{<pixel>}, %w{<inch>}],
|
228
|
+
'<dpi>' => [%w{dpi}, 1, :typography, %w{<dot>}, %w{<inch>}],
|
229
|
+
'<pica>' => [%w{pica}, 0.00423333333 , :typography, %w{<meter>}],
|
230
|
+
'<point>' => [%w{point pt}, 0.000352777778, :typography, %w{<meter>}],
|
231
|
+
|
232
|
+
#other
|
233
|
+
'<cell>' => [%w{cells cell}, 1, :counting, %w{<each>}],
|
234
|
+
'<each>' => [%w{each}, 1, :counting, %w{<each>}],
|
235
|
+
'<count>' => [%w{count}, 1, :counting, %w{<each>}],
|
236
|
+
'<base-pair>' => [%w{bp}, 1, :counting, %w{<each>}],
|
237
|
+
'<nucleotide>' => [%w{nt}, 1, :counting, %w{<each>}],
|
238
|
+
'<molecule>' => [%w{molecule molecules}, 1, :counting, %w{<1>}],
|
239
|
+
'<dozen>' => [%w{doz dz dozen},12,:prefix_only, %w{<each>}],
|
240
|
+
'<percent>'=> [%w{% percent}, Rational(1,100), :prefix_only, %w{<1>}],
|
241
|
+
'<ppm>' => [%w{ppm},Rational(1,1e6),:prefix_only, %w{<1>}],
|
242
|
+
'<ppt>' => [%w{ppt},Rational(1,1e9),:prefix_only, %w{<1>}],
|
243
|
+
'<gross>' => [%w{gr gross},144, :prefix_only, %w{<dozen> <dozen>}],
|
244
|
+
'<decibel>' => [%w{dB decibel decibels}, 1, :logarithmic, %w{<decibel>}]
|
245
|
+
|
246
|
+
|
247
|
+
} # doc
|
248
|
+
end
|
data/ruby-units.gemspec
ADDED
@@ -0,0 +1,83 @@
|
|
1
|
+
# Generated by jeweler
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
+
# Instead, edit Jeweler::Tasks in RakeFile, and run 'rake gemspec'
|
4
|
+
# -*- encoding: utf-8 -*-
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = %q{ruby-units}
|
8
|
+
s.version = "1.3.1"
|
9
|
+
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
+
s.authors = ["Kevin Olbrich, Ph.D."]
|
12
|
+
s.date = %q{2011-06-23}
|
13
|
+
s.description = %q{Provides classes and methods to perform unit math and conversions}
|
14
|
+
s.email = ["kevin.olbrich+ruby_units@gmail.com"]
|
15
|
+
s.extra_rdoc_files = [
|
16
|
+
"LICENSE.txt",
|
17
|
+
"README.md",
|
18
|
+
"TODO"
|
19
|
+
]
|
20
|
+
s.files = [
|
21
|
+
"CHANGELOG.txt",
|
22
|
+
"Gemfile",
|
23
|
+
"LICENSE.txt",
|
24
|
+
"Manifest.txt",
|
25
|
+
"README.md",
|
26
|
+
"RakeFile",
|
27
|
+
"TODO",
|
28
|
+
"VERSION",
|
29
|
+
"lib/ruby-units.rb",
|
30
|
+
"lib/ruby_units.rb",
|
31
|
+
"lib/ruby_units/array.rb",
|
32
|
+
"lib/ruby_units/cache.rb",
|
33
|
+
"lib/ruby_units/date.rb",
|
34
|
+
"lib/ruby_units/fixnum.rb",
|
35
|
+
"lib/ruby_units/math.rb",
|
36
|
+
"lib/ruby_units/numeric.rb",
|
37
|
+
"lib/ruby_units/object.rb",
|
38
|
+
"lib/ruby_units/string.rb",
|
39
|
+
"lib/ruby_units/time.rb",
|
40
|
+
"lib/ruby_units/unit.rb",
|
41
|
+
"lib/ruby_units/unit_definitions.rb",
|
42
|
+
"lib/ruby_units/version.rb",
|
43
|
+
"ruby-units.gemspec",
|
44
|
+
"spec/ruby-units/array_spec.rb",
|
45
|
+
"spec/ruby-units/complex_spec.rb",
|
46
|
+
"spec/ruby-units/date_spec.rb",
|
47
|
+
"spec/ruby-units/math_spec.rb",
|
48
|
+
"spec/ruby-units/numeric_spec.rb",
|
49
|
+
"spec/ruby-units/object_spec.rb",
|
50
|
+
"spec/ruby-units/string_spec.rb",
|
51
|
+
"spec/ruby-units/time_spec.rb",
|
52
|
+
"spec/ruby-units/unit_spec.rb",
|
53
|
+
"spec/spec_helper.rb",
|
54
|
+
"test/test_cache.rb",
|
55
|
+
"test/test_ruby-units.rb"
|
56
|
+
]
|
57
|
+
s.homepage = %q{https://github.com/olbrich/ruby-units}
|
58
|
+
s.require_paths = ["lib"]
|
59
|
+
s.rubygems_version = %q{1.7.2}
|
60
|
+
s.summary = %q{A class that performs unit conversions and unit math}
|
61
|
+
|
62
|
+
if s.respond_to? :specification_version then
|
63
|
+
s.specification_version = 3
|
64
|
+
|
65
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
66
|
+
s.add_development_dependency(%q<bundler>, ["~> 1.0"])
|
67
|
+
s.add_development_dependency(%q<rcov>, [">= 0"])
|
68
|
+
s.add_development_dependency(%q<jeweler>, [">= 0"])
|
69
|
+
s.add_development_dependency(%q<rspec>, ["~> 2.5"])
|
70
|
+
else
|
71
|
+
s.add_dependency(%q<bundler>, ["~> 1.0"])
|
72
|
+
s.add_dependency(%q<rcov>, [">= 0"])
|
73
|
+
s.add_dependency(%q<jeweler>, [">= 0"])
|
74
|
+
s.add_dependency(%q<rspec>, ["~> 2.5"])
|
75
|
+
end
|
76
|
+
else
|
77
|
+
s.add_dependency(%q<bundler>, ["~> 1.0"])
|
78
|
+
s.add_dependency(%q<rcov>, [">= 0"])
|
79
|
+
s.add_dependency(%q<jeweler>, [">= 0"])
|
80
|
+
s.add_dependency(%q<rspec>, ["~> 2.5"])
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
@@ -45,11 +45,7 @@ describe String do
|
|
45
45
|
specify { "now".to_datetime.should be_instance_of DateTime }
|
46
46
|
specify { "now".to_time.should be_instance_of Time }
|
47
47
|
|
48
|
-
|
49
|
-
specify {"10001-01-01 12:00".time.should be_instance_of DateTime }
|
50
|
-
else
|
51
|
-
specify { "10001-01-01 12:00".time.should be_instance_of Time }
|
52
|
-
end
|
48
|
+
specify { "10001-01-01 12:00".time.should be_instance_of Time }
|
53
49
|
specify { "2001-01-01 12:00".time.should be_instance_of Time }
|
54
50
|
|
55
51
|
end
|
@@ -852,4 +852,37 @@ describe "Unit Output formatting" do
|
|
852
852
|
specify { expect {subject.to_s("random string")}.to raise_error(ArgumentError,"'random' Unit not recognized")}
|
853
853
|
end
|
854
854
|
|
855
|
-
end
|
855
|
+
end
|
856
|
+
|
857
|
+
describe "Foot-inch conversions" do
|
858
|
+
[
|
859
|
+
["76 in", %Q{6'4"}],
|
860
|
+
["77 in", %Q{6'5"}],
|
861
|
+
["78 in", %Q{6'6"}],
|
862
|
+
["79 in", %Q{6'7"}],
|
863
|
+
["80 in", %Q{6'8"}],
|
864
|
+
["87 in", %Q{7'3"}],
|
865
|
+
["88 in", %Q{7'4"}],
|
866
|
+
["89 in", %Q{7'5"}]
|
867
|
+
].each do |inches, feet|
|
868
|
+
specify { Unit(inches).to("ft").should == Unit(feet)}
|
869
|
+
specify { Unit(inches).to_s(:ft).should == feet}
|
870
|
+
end
|
871
|
+
end
|
872
|
+
|
873
|
+
describe "pound-ounce conversions" do
|
874
|
+
[
|
875
|
+
["76 oz", "4 lbs, 12 oz"],
|
876
|
+
["77 oz", "4 lbs, 13 oz"],
|
877
|
+
["78 oz", "4 lbs, 14 oz"],
|
878
|
+
["79 oz", "4 lbs, 15 oz"],
|
879
|
+
["80 oz", "5 lbs, 0 oz"],
|
880
|
+
["87 oz", "5 lbs, 7 oz"],
|
881
|
+
["88 oz", "5 lbs, 8 oz"],
|
882
|
+
["89 oz", "5 lbs, 9 oz"]
|
883
|
+
].each do |ounces, pounds|
|
884
|
+
specify { Unit(ounces).to("lbs").should == Unit(pounds)}
|
885
|
+
specify { Unit(ounces).to_s(:lbs).should == pounds}
|
886
|
+
end
|
887
|
+
end
|
888
|
+
|
metadata
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby-units
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
prerelease:
|
5
|
-
version: 1.3.
|
4
|
+
prerelease:
|
5
|
+
version: 1.3.1
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Kevin Olbrich, Ph.D.
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-
|
13
|
+
date: 2011-06-23 00:00:00 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: bundler
|
@@ -68,9 +68,29 @@ extra_rdoc_files:
|
|
68
68
|
- README.md
|
69
69
|
- TODO
|
70
70
|
files:
|
71
|
+
- CHANGELOG.txt
|
72
|
+
- Gemfile
|
71
73
|
- LICENSE.txt
|
74
|
+
- Manifest.txt
|
72
75
|
- README.md
|
76
|
+
- RakeFile
|
73
77
|
- TODO
|
78
|
+
- VERSION
|
79
|
+
- lib/ruby-units.rb
|
80
|
+
- lib/ruby_units.rb
|
81
|
+
- lib/ruby_units/array.rb
|
82
|
+
- lib/ruby_units/cache.rb
|
83
|
+
- lib/ruby_units/date.rb
|
84
|
+
- lib/ruby_units/fixnum.rb
|
85
|
+
- lib/ruby_units/math.rb
|
86
|
+
- lib/ruby_units/numeric.rb
|
87
|
+
- lib/ruby_units/object.rb
|
88
|
+
- lib/ruby_units/string.rb
|
89
|
+
- lib/ruby_units/time.rb
|
90
|
+
- lib/ruby_units/unit.rb
|
91
|
+
- lib/ruby_units/unit_definitions.rb
|
92
|
+
- lib/ruby_units/version.rb
|
93
|
+
- ruby-units.gemspec
|
74
94
|
- spec/ruby-units/array_spec.rb
|
75
95
|
- spec/ruby-units/complex_spec.rb
|
76
96
|
- spec/ruby-units/date_spec.rb
|
@@ -100,9 +120,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
100
120
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
101
121
|
none: false
|
102
122
|
requirements:
|
103
|
-
- - "
|
123
|
+
- - ">="
|
104
124
|
- !ruby/object:Gem::Version
|
105
|
-
version:
|
125
|
+
version: "0"
|
106
126
|
requirements: []
|
107
127
|
|
108
128
|
rubyforge_project:
|
@@ -110,16 +130,5 @@ rubygems_version: 1.7.2
|
|
110
130
|
signing_key:
|
111
131
|
specification_version: 3
|
112
132
|
summary: A class that performs unit conversions and unit math
|
113
|
-
test_files:
|
114
|
-
|
115
|
-
- spec/ruby-units/complex_spec.rb
|
116
|
-
- spec/ruby-units/date_spec.rb
|
117
|
-
- spec/ruby-units/math_spec.rb
|
118
|
-
- spec/ruby-units/numeric_spec.rb
|
119
|
-
- spec/ruby-units/object_spec.rb
|
120
|
-
- spec/ruby-units/string_spec.rb
|
121
|
-
- spec/ruby-units/time_spec.rb
|
122
|
-
- spec/ruby-units/unit_spec.rb
|
123
|
-
- spec/spec_helper.rb
|
124
|
-
- test/test_cache.rb
|
125
|
-
- test/test_ruby-units.rb
|
133
|
+
test_files: []
|
134
|
+
|