ruby-units 1.1.3 → 1.1.4
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/README.txt +14 -14
- data/Rakefile +4 -5
- data/lib/ruby_units/ruby-units.rb +30 -19
- data/test/test_ruby-units.rb +41 -26
- metadata +94 -45
data/README.txt
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
=Ruby Units
|
1
|
+
= Ruby Units
|
2
2
|
|
3
3
|
Kevin C. Olbrich, Ph.D.
|
4
4
|
|
@@ -8,21 +8,21 @@ http://www.sciwerks.com
|
|
8
8
|
|
9
9
|
Project page: http://ruby-units.rubyforge.org/ruby-units
|
10
10
|
|
11
|
-
==Introduction
|
11
|
+
== Introduction
|
12
12
|
Many technical applications make use of specialized calculations at some point.
|
13
13
|
Frequently, these calculations require unit conversions to ensure accurate results.
|
14
14
|
Needless to say, this is a pain to properly keep track of, and is prone to numerous errors.
|
15
15
|
|
16
|
-
==Solution
|
16
|
+
== Solution
|
17
17
|
The 'Ruby units' gem is designed so simplify the handling of units for scientific calculations.
|
18
18
|
The units of each quantity are specified when a Unit object is created and the Unit class will
|
19
19
|
handle all subsequent conversions and manipulations to ensure an accurate result.
|
20
20
|
|
21
|
-
==Installation:
|
21
|
+
== Installation:
|
22
22
|
This package may be installed using:
|
23
23
|
gem install ruby-units
|
24
24
|
|
25
|
-
==Usage:
|
25
|
+
== Usage:
|
26
26
|
unit = Unit.new("1") # constant only
|
27
27
|
unit = Unit.new("mm") # unit only (defaults to a value of 1)
|
28
28
|
unit = Unit.new("1 mm") # create a simple unit
|
@@ -40,17 +40,17 @@ This package may be installed using:
|
|
40
40
|
unit = '1/4 cup'.unit # Rational number
|
41
41
|
unit = '1+1i mm'.unit # Complex Number
|
42
42
|
|
43
|
-
==Rules:
|
43
|
+
== Rules:
|
44
44
|
1. only 1 quantity per unit (with 2 exceptions... 6'5" and '8 lbs 8 oz')
|
45
45
|
2. use SI notation when possible
|
46
46
|
3. avoid using spaces in unit names
|
47
47
|
|
48
|
-
==Unit compatability:
|
48
|
+
== Unit compatability:
|
49
49
|
Many methods require that the units of two operands are compatible. Compatible units are those that can be easily converted into each other, such as 'meters' and 'feet'.
|
50
50
|
|
51
51
|
unit1 =~ unit2 #=> true if units are compatible
|
52
52
|
|
53
|
-
==Unit Math:
|
53
|
+
== Unit Math:
|
54
54
|
|
55
55
|
<b>Method</b>:: <b>Comment</b>
|
56
56
|
Unit#+():: Add. only works if units are compatible
|
@@ -71,7 +71,7 @@ Unit will coerce other objects into a Unit if used in a formula. This means tha
|
|
71
71
|
|
72
72
|
This will work as expected so long as you start the formula with a Unit object.
|
73
73
|
|
74
|
-
==Conversions & comparisons
|
74
|
+
== Conversions & comparisons
|
75
75
|
|
76
76
|
Units can be converted to other units in a couple of ways.
|
77
77
|
|
@@ -89,7 +89,7 @@ Units can be converted to other units in a couple of ways.
|
|
89
89
|
|
90
90
|
Any object that defines a 'to_unit' method will be automatically coerced to a unit during calculations.
|
91
91
|
|
92
|
-
==Text Output
|
92
|
+
== Text Output
|
93
93
|
Units will display themselves nicely based on the preferred abbreviation for the units and prefixes.
|
94
94
|
Since Unit implements a Unit#to_s, all that is needed in most cases is:
|
95
95
|
"#{Unit.new('1 mm')}" #=> "1 mm"
|
@@ -102,7 +102,7 @@ The to_s also accepts some options.
|
|
102
102
|
U("100 kg").to_s(:lbs) #=> returns 220 lbs, 7 oz
|
103
103
|
|
104
104
|
|
105
|
-
==Time Helpers
|
105
|
+
== Time Helpers
|
106
106
|
|
107
107
|
Time, Date, and DateTime objects can have time units added or subtracted.
|
108
108
|
|
@@ -129,16 +129,16 @@ Durations may be entered as 'HH:MM:SS, usec' and will be returned in 'hours'.
|
|
129
129
|
|
130
130
|
If only one ":" is present, it is interpreted as the separator between hours and minutes.
|
131
131
|
|
132
|
-
==Ranges
|
132
|
+
== Ranges
|
133
133
|
|
134
134
|
[U('0 h')..U('10 h')].each {|x| p x}
|
135
135
|
works so long as the starting point has an integer scalar
|
136
136
|
|
137
|
-
==Math functions
|
137
|
+
== Math functions
|
138
138
|
All Trig math functions (sin, cos, sinh, hypot...) can take a unit as their parameter.
|
139
139
|
It will be converted to radians and then used if possible.
|
140
140
|
|
141
|
-
==Temperatures
|
141
|
+
== Temperatures
|
142
142
|
Ruby-units makes a distinction between a temperature (which technically is a property) and
|
143
143
|
degrees of temperature (which temperatures are measured in).
|
144
144
|
|
data/Rakefile
CHANGED
@@ -12,14 +12,13 @@ begin
|
|
12
12
|
rescue
|
13
13
|
end
|
14
14
|
|
15
|
-
Hoe.
|
15
|
+
Hoe.spec('ruby-units') do |p|
|
16
|
+
p.version = Unit::VERSION
|
16
17
|
p.rubyforge_name = 'ruby-units'
|
17
|
-
p.summary = %q{A
|
18
|
+
p.summary = %q{A class that performs unit conversions and unit math}
|
18
19
|
p.email = 'kevin.olbrich+ruby_units@gmail.com'
|
19
20
|
p.url = 'http://rubyforge.org/projects/ruby-units'
|
20
21
|
p.description = "This library handles unit conversions and unit math"
|
21
22
|
p.changes = p.paragraphs_of('CHANGELOG.txt', 0..1).join("\n\n")
|
22
23
|
p.author = 'Kevin Olbrich, Ph.D'
|
23
|
-
end
|
24
|
-
|
25
|
-
# vim: syntax=Ruby
|
24
|
+
end
|
@@ -33,14 +33,14 @@ require 'parsedate'
|
|
33
33
|
# To add / override a unit definition, add a code block like this..
|
34
34
|
#
|
35
35
|
# class Unit < Numeric
|
36
|
-
#
|
36
|
+
# @@USER_DEFINITIONS = {
|
37
37
|
# <name>' => [%w{prefered_name synonyms}, conversion_to_base, :classification, %w{<base> <units> <in> <numerator>} , %w{<base> <units> <in> <denominator>} ]
|
38
38
|
# }
|
39
39
|
# end
|
40
40
|
# Unit.setup
|
41
41
|
class Unit < Numeric
|
42
42
|
# pre-generate hashes from unit definitions for performance.
|
43
|
-
VERSION = '1.1.
|
43
|
+
VERSION = '1.1.4'
|
44
44
|
@@USER_DEFINITIONS = {}
|
45
45
|
@@PREFIX_VALUES = {}
|
46
46
|
@@PREFIX_MAP = {}
|
@@ -90,7 +90,7 @@ class Unit < Numeric
|
|
90
90
|
7959=>:pressure,
|
91
91
|
7962=>:energy,
|
92
92
|
7979=>:viscosity,
|
93
|
-
|
93
|
+
7961=>:force,
|
94
94
|
7997=>:mass_concentration,
|
95
95
|
8000=>:mass,
|
96
96
|
159999=>:magnetism,
|
@@ -159,7 +159,6 @@ class Unit < Numeric
|
|
159
159
|
@is_base = from.is_base?
|
160
160
|
@signature = from.signature
|
161
161
|
@base_scalar = from.base_scalar
|
162
|
-
@output = from.output rescue nil
|
163
162
|
@unit_name = from.unit_name rescue nil
|
164
163
|
end
|
165
164
|
|
@@ -192,7 +191,7 @@ class Unit < Numeric
|
|
192
191
|
@base_scalar = nil
|
193
192
|
@unit_name = nil
|
194
193
|
@signature = nil
|
195
|
-
@output =
|
194
|
+
@output = {}
|
196
195
|
if options.size == 2
|
197
196
|
begin
|
198
197
|
cached = @@cached_units[options[1]] * options[0]
|
@@ -232,8 +231,10 @@ class Unit < Numeric
|
|
232
231
|
@scalar = options[0].ajd
|
233
232
|
@numerator = ['<day>']
|
234
233
|
@denominator = UNITY_ARRAY
|
235
|
-
when "":
|
236
|
-
|
234
|
+
when "":
|
235
|
+
raise ArgumentError, "No Unit Specified"
|
236
|
+
when String:
|
237
|
+
parse(options[0])
|
237
238
|
else
|
238
239
|
raise ArgumentError, "Invalid Unit Format"
|
239
240
|
end
|
@@ -263,6 +264,7 @@ class Unit < Numeric
|
|
263
264
|
def self.clear_cache
|
264
265
|
@@cached_units = {}
|
265
266
|
@@base_unit_cache = {}
|
267
|
+
Unit.new(1)
|
266
268
|
end
|
267
269
|
|
268
270
|
def self.base_unit_cache
|
@@ -349,23 +351,33 @@ class Unit < Numeric
|
|
349
351
|
# output is cached so subsequent calls for the same format will be fast
|
350
352
|
#
|
351
353
|
def to_s(target_units=nil)
|
352
|
-
out = @output[target_units]
|
354
|
+
out = @output[target_units]
|
353
355
|
if out
|
354
356
|
return out
|
355
357
|
else
|
356
358
|
case target_units
|
357
|
-
when :ft:
|
359
|
+
when :ft :
|
358
360
|
inches = self.to("in").scalar.to_int
|
359
361
|
out = "#{(inches / 12).truncate}\'#{(inches % 12).round}\""
|
360
|
-
when :lbs:
|
362
|
+
when :lbs :
|
361
363
|
ounces = self.to("oz").scalar.to_int
|
362
364
|
out = "#{(ounces / 16).truncate} lbs, #{(ounces % 16).round} oz"
|
363
365
|
when String
|
364
|
-
|
365
|
-
|
366
|
-
|
367
|
-
|
368
|
-
|
366
|
+
out = case target_units
|
367
|
+
when /(%[-+\.\w\d#]+)\s*(.+)*/ #format string like '%0.2f in'
|
368
|
+
begin
|
369
|
+
if $2 #unit specified, need to convert
|
370
|
+
self.to($2).to_s($1)
|
371
|
+
else
|
372
|
+
"#{$1 % @scalar} #{$2 || self.units}".strip
|
373
|
+
end
|
374
|
+
rescue
|
375
|
+
(Time.gm(0) + self).strftime(target_units)
|
376
|
+
end
|
377
|
+
when /(\S+)/ #unit only 'mm' or '1/mm'
|
378
|
+
"#{self.to($1).to_s}"
|
379
|
+
else #strftotime?
|
380
|
+
raise "unhandled case"
|
369
381
|
end
|
370
382
|
else
|
371
383
|
out = case @scalar
|
@@ -375,7 +387,7 @@ class Unit < Numeric
|
|
375
387
|
"#{'%g' % @scalar} #{self.units}"
|
376
388
|
end.strip
|
377
389
|
end
|
378
|
-
@output =
|
390
|
+
@output[target_units] = out
|
379
391
|
return out
|
380
392
|
end
|
381
393
|
end
|
@@ -785,7 +797,7 @@ class Unit < Numeric
|
|
785
797
|
# convert a duration to a DateTime. This will work so long as the duration is the duration from the zero date
|
786
798
|
# defined by DateTime
|
787
799
|
def to_datetime
|
788
|
-
DateTime.
|
800
|
+
DateTime.new!(self.to('d').scalar)
|
789
801
|
end
|
790
802
|
|
791
803
|
def to_date
|
@@ -1065,8 +1077,7 @@ class Unit < Numeric
|
|
1065
1077
|
end
|
1066
1078
|
|
1067
1079
|
raise( ArgumentError, "'#{passed_unit_string}' Unit not recognized") if unit_string.count('/') > 1
|
1068
|
-
raise( ArgumentError, "'#{passed_unit_string}' Unit not recognized") if unit_string.scan(/\s
|
1069
|
-
|
1080
|
+
raise( ArgumentError, "'#{passed_unit_string}' Unit not recognized") if unit_string.scan(/\s[02-9]/).size > 0
|
1070
1081
|
@scalar, top, bottom = unit_string.scan(UNIT_STRING_REGEX)[0] #parse the string into parts
|
1071
1082
|
|
1072
1083
|
top.scan(TOP_REGEX).each do |item|
|
data/test/test_ruby-units.rb
CHANGED
@@ -90,7 +90,7 @@ class TestRubyUnits < Test::Unit::TestCase
|
|
90
90
|
assert_in_delta Time.now + 3600, "1 h".from_now, 1
|
91
91
|
assert_in_delta "1 h".unit + Time.now, "1 h".from_now, 1
|
92
92
|
assert_in_delta Time.now - 3600, "1 h".before_now, 1
|
93
|
-
assert_in_delta
|
93
|
+
assert_in_delta((Time.now.unit - Time.now).unit.scalar, 0, 1)
|
94
94
|
assert_equal "60 min", "min".until(Time.now + 3600).to_s
|
95
95
|
assert_equal "01:00", "min".since(Time.now - 3600).to_s("%H:%M")
|
96
96
|
assert_in_delta Time.now, "now".time, 1
|
@@ -114,8 +114,8 @@ class TestRubyUnits < Test::Unit::TestCase
|
|
114
114
|
assert_equal Unit.new(Time.now).scalar, 1143910800
|
115
115
|
assert_equal @april_fools.unit.to_time, @april_fools
|
116
116
|
assert_equal Time.in('1 day'), @april_fools + 86400
|
117
|
-
assert_equal
|
118
|
-
assert_equal '2453826.5 days'.unit.to_datetime.to_s
|
117
|
+
assert_equal "2006-04-01T12:00:00+00:00", @april_fools_datetime.inspect
|
118
|
+
assert_equal "2006-04-01T00:00:00+00:00", '2453826.5 days'.unit.to_datetime.to_s
|
119
119
|
end
|
120
120
|
|
121
121
|
def test_string_helpers
|
@@ -273,12 +273,12 @@ class TestRubyUnits < Test::Unit::TestCase
|
|
273
273
|
c = '1 in'.unit
|
274
274
|
d = '1 ml'.unit
|
275
275
|
|
276
|
-
assert_equal
|
277
|
-
assert_equal
|
278
|
-
assert_equal
|
279
|
-
assert_equal
|
280
|
-
assert_in_delta
|
281
|
-
assert_equal
|
276
|
+
assert_equal((a+b), b)
|
277
|
+
assert_equal((a+b).units, b.units)
|
278
|
+
assert_equal((b+a), b)
|
279
|
+
assert_equal((b+a).units, b.units)
|
280
|
+
assert_in_delta((b+c).scalar, 12.54, 0.01)
|
281
|
+
assert_equal((b+c).units, 'cm')
|
282
282
|
assert_raises(ArgumentError) {
|
283
283
|
b + d
|
284
284
|
}
|
@@ -290,12 +290,12 @@ class TestRubyUnits < Test::Unit::TestCase
|
|
290
290
|
c = '1 in'.unit
|
291
291
|
d = '1 ml'.unit
|
292
292
|
|
293
|
-
assert_equal
|
294
|
-
assert_equal
|
295
|
-
assert_equal
|
296
|
-
assert_equal
|
297
|
-
assert_in_delta
|
298
|
-
assert_equal
|
293
|
+
assert_equal((a-b), -b)
|
294
|
+
assert_equal((a-b).units, b.units)
|
295
|
+
assert_equal((b-a), b)
|
296
|
+
assert_equal((b-a).units, b.units)
|
297
|
+
assert_in_delta((b-c).scalar, 7.46, 0.01)
|
298
|
+
assert_equal((b-c).units, 'cm')
|
299
299
|
assert_raises(ArgumentError) {
|
300
300
|
b - d
|
301
301
|
}
|
@@ -482,7 +482,7 @@ class TestRubyUnits < Test::Unit::TestCase
|
|
482
482
|
unit1 = Unit.new("1 m")
|
483
483
|
unit2 = Unit.new("1 1/m")
|
484
484
|
assert_equal unit2, unit1.inverse
|
485
|
-
assert_raises
|
485
|
+
assert_raises((ZeroDivisionError)) { 0.unit.inverse }
|
486
486
|
end
|
487
487
|
|
488
488
|
def test_exponentiate_positive
|
@@ -527,14 +527,14 @@ class TestRubyUnits < Test::Unit::TestCase
|
|
527
527
|
unit1 = Unit.new("1.1 mm")
|
528
528
|
unit2 = Unit.new("2 mm")
|
529
529
|
assert_equal unit2, unit1.ceil
|
530
|
-
assert_equal
|
530
|
+
assert_equal(('1 mm'.unit / '1 mm'.unit).ceil, 1)
|
531
531
|
end
|
532
532
|
|
533
533
|
def test_floor
|
534
534
|
unit1 = Unit.new("1.1 mm")
|
535
535
|
unit2 = Unit.new("1 mm")
|
536
536
|
assert_equal unit2, unit1.floor
|
537
|
-
assert_equal
|
537
|
+
assert_equal(('1 mm'.unit / '1 mm'.unit).floor, 1)
|
538
538
|
end
|
539
539
|
|
540
540
|
def test_to_int
|
@@ -546,14 +546,14 @@ class TestRubyUnits < Test::Unit::TestCase
|
|
546
546
|
unit1 = Unit.new("1.1 mm")
|
547
547
|
unit2 = Unit.new("1 mm")
|
548
548
|
assert_equal unit2, unit1.truncate
|
549
|
-
assert_equal
|
549
|
+
assert_equal((unit1/unit2).truncate, 1)
|
550
550
|
end
|
551
551
|
|
552
552
|
def test_round
|
553
553
|
unit1 = Unit.new("1.1 mm")
|
554
554
|
unit2 = Unit.new("1 mm")
|
555
555
|
assert_equal unit2, unit1.round
|
556
|
-
assert_equal
|
556
|
+
assert_equal((unit1/unit2).round, 1)
|
557
557
|
end
|
558
558
|
|
559
559
|
def test_zero?
|
@@ -601,7 +601,7 @@ class TestRubyUnits < Test::Unit::TestCase
|
|
601
601
|
assert_equal a+b, '118 tempF'.unit
|
602
602
|
assert_equal b+a, '118 tempF'.unit
|
603
603
|
assert_equal a-b, '82 tempF'.unit
|
604
|
-
assert_in_delta
|
604
|
+
assert_in_delta((a-c).scalar, '50 degF'.unit.scalar, 0.01)
|
605
605
|
assert_equal b+d, '20 degC'.unit
|
606
606
|
|
607
607
|
assert_raises(ArgumentError) { a * b }
|
@@ -661,7 +661,8 @@ class TestRubyUnits < Test::Unit::TestCase
|
|
661
661
|
assert_equal "1 kg*m/s", unit6.to_s
|
662
662
|
unit7= Unit.new("1 1/m")
|
663
663
|
assert_equal "1 1/m", unit7.to_s
|
664
|
-
|
664
|
+
assert_equal("1.5 mm", Unit.new("1.5 mm").to_s)
|
665
|
+
assert_equal("1.5 mm", "#{Unit.new('1.5 mm')}")
|
665
666
|
end
|
666
667
|
|
667
668
|
def test_to_feet_inches
|
@@ -791,6 +792,7 @@ class TestRubyUnits < Test::Unit::TestCase
|
|
791
792
|
end
|
792
793
|
|
793
794
|
def test_parse
|
795
|
+
assert_nothing_raised { "1 1/m".unit }
|
794
796
|
assert_raises(ArgumentError) { "3 s/s/ft".unit }
|
795
797
|
assert_raises(ArgumentError) { "3 s**2|,s**2".unit }
|
796
798
|
assert_raises(ArgumentError) { "3 s**2 4s s**2".unit }
|
@@ -833,7 +835,7 @@ class TestRubyUnits < Test::Unit::TestCase
|
|
833
835
|
assert_equal "1:30:30,200".unit, "1.5 hour".unit + '30 sec'.unit + '200 usec'.unit
|
834
836
|
end
|
835
837
|
|
836
|
-
def
|
838
|
+
def test_coercion_2
|
837
839
|
a = Dummy.new
|
838
840
|
b = '1 mm'.unit
|
839
841
|
assert_equal '2 mm'.unit, b + a
|
@@ -861,13 +863,13 @@ class TestRubyUnits < Test::Unit::TestCase
|
|
861
863
|
def test_complex
|
862
864
|
assert_equal '1+1i mm'.unit.scalar, Complex(1,1)
|
863
865
|
assert_equal '1+1i'.unit.scalar, Complex(1,1)
|
864
|
-
assert_raises
|
866
|
+
assert_raises(RuntimeError) { '1+1i mm'.unit.to_c}
|
865
867
|
end
|
866
868
|
|
867
869
|
def test_atan2
|
868
870
|
assert_equal Math.atan2('1 mm'.unit,'1 mm'.unit), Math.atan2(1,1)
|
869
|
-
assert_raises
|
870
|
-
assert_raises
|
871
|
+
assert_raises(ArgumentError) {Math.atan2('1 mm'.unit, '1 lb'.unit)}
|
872
|
+
assert_raises(ArgumentError) {Math.atan2('1 mm'.unit, 1)}
|
871
873
|
end
|
872
874
|
|
873
875
|
def test_rational_units
|
@@ -898,6 +900,19 @@ class TestRubyUnits < Test::Unit::TestCase
|
|
898
900
|
assert_nothing_raised {"" % nil}
|
899
901
|
assert_nothing_raised {"" % false}
|
900
902
|
end
|
903
|
+
|
904
|
+
def test_to_s_cache
|
905
|
+
Unit.clear_cache
|
906
|
+
a = Unit.new('1 mm')
|
907
|
+
a.to_s # cache the conversion to itself
|
908
|
+
b = Unit.new('2 mm')
|
909
|
+
assert_equal('2 mm', b.to_s)
|
910
|
+
assert_equal('0.001 m', a.to_s('m'))
|
911
|
+
assert_equal('0.001 m', a.output['m'])
|
912
|
+
end
|
901
913
|
|
914
|
+
def test_version
|
915
|
+
assert_equal('1.1.4', Unit::VERSION)
|
916
|
+
end
|
902
917
|
end
|
903
918
|
|
metadata
CHANGED
@@ -1,33 +1,75 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
|
-
rubygems_version: 0.9.0
|
3
|
-
specification_version: 1
|
4
2
|
name: ruby-units
|
5
3
|
version: !ruby/object:Gem::Version
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
-
|
11
|
-
|
12
|
-
homepage: http://rubyforge.org/projects/ruby-units
|
13
|
-
rubyforge_project: ruby-units
|
14
|
-
description: This library handles unit conversions and unit math
|
15
|
-
autorequire:
|
16
|
-
default_executable:
|
17
|
-
bindir: bin
|
18
|
-
has_rdoc: true
|
19
|
-
required_ruby_version: !ruby/object:Gem::Version::Requirement
|
20
|
-
requirements:
|
21
|
-
- - ">"
|
22
|
-
- !ruby/object:Gem::Version
|
23
|
-
version: 0.0.0
|
24
|
-
version:
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 1
|
7
|
+
- 1
|
8
|
+
- 4
|
9
|
+
version: 1.1.4
|
25
10
|
platform: ruby
|
26
|
-
signing_key:
|
27
|
-
cert_chain:
|
28
|
-
post_install_message:
|
29
11
|
authors:
|
30
12
|
- Kevin Olbrich, Ph.D
|
13
|
+
autorequire:
|
14
|
+
bindir: bin
|
15
|
+
cert_chain: []
|
16
|
+
|
17
|
+
date: 2010-03-13 23:00:00 -05:00
|
18
|
+
default_executable:
|
19
|
+
dependencies:
|
20
|
+
- !ruby/object:Gem::Dependency
|
21
|
+
name: rubyforge
|
22
|
+
prerelease: false
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
24
|
+
requirements:
|
25
|
+
- - ">="
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
segments:
|
28
|
+
- 2
|
29
|
+
- 0
|
30
|
+
- 4
|
31
|
+
version: 2.0.4
|
32
|
+
type: :development
|
33
|
+
version_requirements: *id001
|
34
|
+
- !ruby/object:Gem::Dependency
|
35
|
+
name: gemcutter
|
36
|
+
prerelease: false
|
37
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - ">="
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
segments:
|
42
|
+
- 0
|
43
|
+
- 4
|
44
|
+
- 1
|
45
|
+
version: 0.4.1
|
46
|
+
type: :development
|
47
|
+
version_requirements: *id002
|
48
|
+
- !ruby/object:Gem::Dependency
|
49
|
+
name: hoe
|
50
|
+
prerelease: false
|
51
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
52
|
+
requirements:
|
53
|
+
- - ">="
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
segments:
|
56
|
+
- 2
|
57
|
+
- 5
|
58
|
+
- 0
|
59
|
+
version: 2.5.0
|
60
|
+
type: :development
|
61
|
+
version_requirements: *id003
|
62
|
+
description: This library handles unit conversions and unit math
|
63
|
+
email: kevin.olbrich+ruby_units@gmail.com
|
64
|
+
executables: []
|
65
|
+
|
66
|
+
extensions: []
|
67
|
+
|
68
|
+
extra_rdoc_files:
|
69
|
+
- CHANGELOG.txt
|
70
|
+
- Manifest.txt
|
71
|
+
- README.txt
|
72
|
+
- LICENSE.txt
|
31
73
|
files:
|
32
74
|
- CHANGELOG.txt
|
33
75
|
- Manifest.txt
|
@@ -47,29 +89,36 @@ files:
|
|
47
89
|
- lib/ruby_units/complex.rb
|
48
90
|
- lib/ruby_units/ruby-units.rb
|
49
91
|
- test/test_ruby-units.rb
|
50
|
-
|
51
|
-
|
92
|
+
has_rdoc: true
|
93
|
+
homepage: http://rubyforge.org/projects/ruby-units
|
94
|
+
licenses: []
|
95
|
+
|
96
|
+
post_install_message:
|
52
97
|
rdoc_options:
|
53
98
|
- --main
|
54
99
|
- README.txt
|
55
|
-
|
56
|
-
-
|
57
|
-
|
58
|
-
|
59
|
-
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
100
|
+
require_paths:
|
101
|
+
- lib
|
102
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
103
|
+
requirements:
|
104
|
+
- - ">="
|
105
|
+
- !ruby/object:Gem::Version
|
106
|
+
segments:
|
107
|
+
- 0
|
108
|
+
version: "0"
|
109
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
110
|
+
requirements:
|
111
|
+
- - ">="
|
112
|
+
- !ruby/object:Gem::Version
|
113
|
+
segments:
|
114
|
+
- 0
|
115
|
+
version: "0"
|
64
116
|
requirements: []
|
65
117
|
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
- !ruby/object:Gem::Version
|
74
|
-
version: 1.3.0
|
75
|
-
version:
|
118
|
+
rubyforge_project: ruby-units
|
119
|
+
rubygems_version: 1.3.6
|
120
|
+
signing_key:
|
121
|
+
specification_version: 3
|
122
|
+
summary: A class that performs unit conversions and unit math
|
123
|
+
test_files:
|
124
|
+
- test/test_ruby-units.rb
|