ruby-units 1.1.0 → 1.1.2
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 +8 -0
- data/README.txt +33 -32
- data/Rakefile +7 -4
- data/lib/ruby_units/ruby-units.rb +14 -52
- data/lib/ruby_units/string.rb +1 -1
- data/lib/ruby_units/time.rb +6 -3
- data/lib/ruby_units/units.rb +1 -1
- data/test/test_ruby-units.rb +33 -6
- metadata +12 -8
data/CHANGELOG.txt
CHANGED
@@ -1,5 +1,13 @@
|
|
1
1
|
Change Log for Ruby-units
|
2
2
|
=========================
|
3
|
+
2007-12-12 1.1.2 * fixed a bug with format strings
|
4
|
+
* detect if ruby 1.8.6 is installed and use its' to_date function
|
5
|
+
|
6
|
+
2007-07-14 1.1.1 * fixed bug that would prevent creating '<pound-mass>' units, which
|
7
|
+
prevented rounding from working
|
8
|
+
* tests do not fail if Uncertain gem is not installed, you just get an
|
9
|
+
annoying warning message
|
10
|
+
|
3
11
|
2007-01-28 1.1.0 * completely revamped the temperature handling system (see README)
|
4
12
|
* fixed some spelling errors in some units
|
5
13
|
* fixed to_datetime and to_date to convert durations to datetimes and dates'
|
data/README.txt
CHANGED
@@ -1,11 +1,12 @@
|
|
1
1
|
=Ruby Units
|
2
2
|
|
3
3
|
Kevin C. Olbrich, Ph.D.
|
4
|
+
|
4
5
|
kevin.olbrich@gmail.com
|
5
6
|
|
6
7
|
http://www.sciwerks.com
|
7
8
|
|
8
|
-
Project page: http://rubyforge.org/
|
9
|
+
Project page: http://ruby-units.rubyforge.org/ruby-units
|
9
10
|
|
10
11
|
==Introduction
|
11
12
|
Many technical applications make use of specialized calculations at some point.
|
@@ -111,26 +112,26 @@ Several helpers have also been defined.
|
|
111
112
|
Note: If you include the 'Chronic' gem, you can specify times in natural
|
112
113
|
language.
|
113
114
|
|
114
|
-
'min'.since('9/18/06 3:00pm')
|
115
|
-
'min'.before('9/18/08 3:00pm')
|
116
|
-
'days'.until('1/1/07')
|
117
|
-
'5 min'.from(Time.now)
|
118
|
-
'5 min'.from_now
|
119
|
-
'5 min'.before_now
|
120
|
-
'5 min'.before(Time.now)
|
121
|
-
'10 min'.ago
|
115
|
+
'min'.since('9/18/06 3:00pm')
|
116
|
+
'min'.before('9/18/08 3:00pm')
|
117
|
+
'days'.until('1/1/07')
|
118
|
+
'5 min'.from(Time.now)
|
119
|
+
'5 min'.from_now
|
120
|
+
'5 min'.before_now
|
121
|
+
'5 min'.before(Time.now)
|
122
|
+
'10 min'.ago
|
122
123
|
|
123
124
|
Durations may be entered as 'HH:MM:SS, usec' and will be returned in 'hours'.
|
124
125
|
|
125
|
-
'1:00'.unit #=> 1 h
|
126
|
-
'0:30'.unit #=> 0.5 h
|
127
|
-
'0:30:30'.unit #=> 0.5 h + 30 sec
|
126
|
+
'1:00'.unit #=> 1 h
|
127
|
+
'0:30'.unit #=> 0.5 h
|
128
|
+
'0:30:30'.unit #=> 0.5 h + 30 sec
|
128
129
|
|
129
130
|
If only one ":" is present, it is interpreted as the separator between hours and minutes.
|
130
131
|
|
131
132
|
==Ranges
|
132
133
|
|
133
|
-
[U('0 h')..U('10 h')].each {|x| p x}
|
134
|
+
[U('0 h')..U('10 h')].each {|x| p x}
|
134
135
|
works so long as the starting point has an integer scalar
|
135
136
|
|
136
137
|
==Math functions
|
@@ -145,29 +146,29 @@ Temperature units (i.e., 'tempK') can be converted back and forth, and will take
|
|
145
146
|
the differences in the zero points of the various scales. Differential temperature (e.g., '100 degC'.unit)
|
146
147
|
units behave like most other units.
|
147
148
|
|
148
|
-
'37 tempC'.unit >> 'tempF' #=> 98.6 tempF
|
149
|
+
'37 tempC'.unit >> 'tempF' #=> 98.6 tempF
|
149
150
|
|
150
151
|
Ruby-units will raise an exception if you attempt to create a temperature unit that would
|
151
152
|
fall below absolute zero.
|
152
153
|
|
153
154
|
Unit math on temperatures is fairly limited.
|
154
155
|
|
155
|
-
'100 tempC'.unit + '10 degC'.unit #=> '110 tempC'.unit
|
156
|
-
'100 tempC'.unit - '10 degC'.unit #=> '90 tempC'.unit
|
157
|
-
'100 tempC'.unit + '50 tempC'.unit #=> exception
|
158
|
-
'100 tempC'.unit - '50 tempC'.unit #=> '50 degC'.unit
|
159
|
-
'50 tempC'.unit - '100 tempC'.unit #=> '-50 degC'.unit
|
160
|
-
'100 tempC'.unit * [scalar] #=> '100*scalar tempC'.unit
|
161
|
-
'100 tempC'.unit / [scalar] #=> '100/scalar tempC'.unit
|
162
|
-
'100 tempC'.unit * [unit] #=> exception
|
163
|
-
'100 tempC'.unit / [unit] #=> exception
|
164
|
-
'100 tempC'.unit ** N #=> exception
|
165
|
-
|
166
|
-
'100 tempC'.unit >> 'degC' #=> '100 degC'.unit
|
167
|
-
|
168
|
-
|
169
|
-
'100 degC'.unit >> 'tempC' #=> '-173 tempC'.unit
|
170
|
-
|
171
|
-
|
172
|
-
|
156
|
+
'100 tempC'.unit + '10 degC'.unit #=> '110 tempC'.unit
|
157
|
+
'100 tempC'.unit - '10 degC'.unit #=> '90 tempC'.unit
|
158
|
+
'100 tempC'.unit + '50 tempC'.unit #=> exception
|
159
|
+
'100 tempC'.unit - '50 tempC'.unit #=> '50 degC'.unit
|
160
|
+
'50 tempC'.unit - '100 tempC'.unit #=> '-50 degC'.unit
|
161
|
+
'100 tempC'.unit * [scalar] #=> '100*scalar tempC'.unit
|
162
|
+
'100 tempC'.unit / [scalar] #=> '100/scalar tempC'.unit
|
163
|
+
'100 tempC'.unit * [unit] #=> exception
|
164
|
+
'100 tempC'.unit / [unit] #=> exception
|
165
|
+
'100 tempC'.unit ** N #=> exception
|
166
|
+
|
167
|
+
'100 tempC'.unit >> 'degC' #=> '100 degC'.unit
|
168
|
+
This conversion references the 0 point on the scale of the temperature unit
|
169
|
+
|
170
|
+
'100 degC'.unit >> 'tempC' #=> '-173 tempC'.unit
|
171
|
+
These conversions are always interpreted as being relative to absolute zero.
|
172
|
+
Conversions are probably better done like this...
|
173
|
+
'0 tempC'.unit + '100 degC'.unit #=> '100 tempC'.unit
|
173
174
|
|
data/Rakefile
CHANGED
@@ -2,11 +2,14 @@ require 'rubygems'
|
|
2
2
|
require 'hoe'
|
3
3
|
require './lib/ruby_units/units'
|
4
4
|
require './lib/ruby_units/ruby-units'
|
5
|
-
require 'rcov/rcovtask'
|
6
5
|
|
7
|
-
|
8
|
-
|
9
|
-
|
6
|
+
begin
|
7
|
+
require 'rcov/rcovtask'
|
8
|
+
Rcov::RcovTask.new do |t|
|
9
|
+
t.test_files = FileList['test/test*.rb']
|
10
|
+
#t.verbose = true # uncomment to see the executed command
|
11
|
+
end
|
12
|
+
rescue
|
10
13
|
end
|
11
14
|
|
12
15
|
Hoe.new('ruby-units', Unit::VERSION) do |p|
|
@@ -40,7 +40,7 @@ require 'parsedate'
|
|
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.2'
|
44
44
|
@@USER_DEFINITIONS = {}
|
45
45
|
@@PREFIX_VALUES = {}
|
46
46
|
@@PREFIX_MAP = {}
|
@@ -52,7 +52,7 @@ class Unit < Numeric
|
|
52
52
|
UNITY_ARRAY= [UNITY]
|
53
53
|
FEET_INCH_REGEX = /(\d+)\s*(?:'|ft|feet)\s*(\d+)\s*(?:"|in|inches)/
|
54
54
|
TIME_REGEX = /(\d+)*:(\d+)*:*(\d+)*[:,]*(\d+)*/
|
55
|
-
LBS_OZ_REGEX = /(\d+)\s*(?:#|lbs|pounds)+[\s,]*(\d+)\s*(?:oz|ounces)/
|
55
|
+
LBS_OZ_REGEX = /(\d+)\s*(?:#|lbs|pounds|pound-mass)+[\s,]*(\d+)\s*(?:oz|ounces)/
|
56
56
|
SCI_NUMBER = %r{([+-]?\d*[.]?\d+(?:[Ee][+-]?)?\d*)}
|
57
57
|
RATIONAL_NUMBER = /(\d+)\/(\d+)/
|
58
58
|
COMPLEX_NUMBER = /#{SCI_NUMBER}?#{SCI_NUMBER}i\b/
|
@@ -240,7 +240,6 @@ class Unit < Numeric
|
|
240
240
|
self.update_base_scalar
|
241
241
|
raise ArgumentError, "Temperature out of range" if self.is_temperature? && self.base_scalar < 0
|
242
242
|
|
243
|
-
|
244
243
|
unary_unit = self.units || ""
|
245
244
|
opt_units = options[0].scan(NUMBER_REGEX)[0][1] if String === options[0]
|
246
245
|
unless @@cached_units.keys.include?(opt_units) || (opt_units =~ /(temp|deg(C|K|R|F))|(pounds|lbs[ ,]\d+ ounces|oz)|('\d+")|(ft|feet[ ,]\d+ in|inch|inches)|%|(#{TIME_REGEX})|i\s?(.+)?|±|\+\/-/)
|
@@ -270,6 +269,11 @@ class Unit < Numeric
|
|
270
269
|
return @@base_unit_cache
|
271
270
|
end
|
272
271
|
|
272
|
+
def self.parse(input)
|
273
|
+
first, second = input.scan(/(.+)\s(?:in|to|as)\s(.+)/i).first
|
274
|
+
second.nil? ? first.unit : first.unit.to(second)
|
275
|
+
end
|
276
|
+
|
273
277
|
def to_unit
|
274
278
|
self
|
275
279
|
end
|
@@ -382,10 +386,13 @@ class Unit < Numeric
|
|
382
386
|
self.to_s
|
383
387
|
end
|
384
388
|
|
389
|
+
# true if unit is a 'temperature', false if a 'degree' or anything else
|
385
390
|
def is_temperature?
|
386
391
|
return true if self.signature == 400 && self.units =~ /temp/
|
387
392
|
end
|
388
393
|
|
394
|
+
# returns the 'degree' unit associated with a temperature unit
|
395
|
+
# '100 tempC'.unit.temperature_scale #=> 'degC'
|
389
396
|
def temperature_scale
|
390
397
|
return nil unless self.is_temperature?
|
391
398
|
self.units =~ /temp(C|F|R|K)/
|
@@ -456,7 +463,7 @@ class Unit < Numeric
|
|
456
463
|
case
|
457
464
|
when self.zero? : other.dup
|
458
465
|
when self =~ other :
|
459
|
-
raise ArgumentError, "Cannot add two temperatures" if (self.
|
466
|
+
raise ArgumentError, "Cannot add two temperatures" if ([self, other].all? {|x| x.is_temperature?})
|
460
467
|
if [self, other].any? {|x| x.is_temperature?}
|
461
468
|
case self.is_temperature?
|
462
469
|
when true:
|
@@ -492,7 +499,7 @@ class Unit < Numeric
|
|
492
499
|
when self.is_temperature? :
|
493
500
|
Unit.new(:scalar => (self.base_scalar - other.base_scalar), :numerator => ['<temp-K>'], :denominator => UNITY_ARRAY, :signature => @signature).to(self)
|
494
501
|
when other.is_temperature? :
|
495
|
-
raise ArgumentError, "Cannot subtract a temperature from a differential unit"
|
502
|
+
raise ArgumentError, "Cannot subtract a temperature from a differential degree unit"
|
496
503
|
else
|
497
504
|
@q ||= ((@@cached_units[self.units].scalar / @@cached_units[self.units].base_scalar) rescue (self.units.unit.scalar/self.units.unit.to_base.scalar))
|
498
505
|
Unit.new(:scalar=>(self.base_scalar - other.base_scalar)*@q, :numerator=>@numerator, :denominator=>@denominator, :signature=>@signature)
|
@@ -552,7 +559,7 @@ class Unit < Numeric
|
|
552
559
|
#
|
553
560
|
# For now, if a rational is passed in, it will be used, otherwise we are stuck with integers and certain floats < 1
|
554
561
|
def **(other)
|
555
|
-
raise ArgumentError, "Cannot
|
562
|
+
raise ArgumentError, "Cannot raise a temperature to a power" if self.is_temperature?
|
556
563
|
if Numeric === other
|
557
564
|
return Unit("1") if other.zero?
|
558
565
|
return self if other == 1
|
@@ -660,43 +667,6 @@ class Unit < Numeric
|
|
660
667
|
when 'tempR' : @base_scalar * (9.0/5.0)
|
661
668
|
end
|
662
669
|
|
663
|
-
=begin
|
664
|
-
q=case start_unit
|
665
|
-
when /\A(temp|deg)C\Z/:
|
666
|
-
case target_unit
|
667
|
-
when 'tempC' : @scalar
|
668
|
-
when 'tempK' : @scalar + 273.15
|
669
|
-
when 'tempF' : @scalar * (9.0/5.0) + 32.0
|
670
|
-
when 'tempR' : @scalar * (9.0/5.0) + 491.67
|
671
|
-
end
|
672
|
-
when /\A(temp|deg)K\Z/:
|
673
|
-
case target_unit
|
674
|
-
when 'tempC' : @scalar - 273.15
|
675
|
-
when 'tempK' : @scalar
|
676
|
-
when 'tempF' : @scalar * (9.0/5.0) - 459.67
|
677
|
-
when 'tempR' : @scalar * (9.0/5.0)
|
678
|
-
end
|
679
|
-
when /\A(temp|deg)F\Z/:
|
680
|
-
case target_unit
|
681
|
-
when 'tempC' : (@scalar-32)*(5.0/9.0)
|
682
|
-
when 'tempK' : (@scalar+459.67)*(5.0/9.0)
|
683
|
-
when 'tempF' : @scalar
|
684
|
-
when 'tempR' : @scalar + 459.67
|
685
|
-
end
|
686
|
-
when /\A(temp|deg)R\Z/:
|
687
|
-
case target_unit
|
688
|
-
when 'tempC' : @scalar*(5.0/9.0) -273.15
|
689
|
-
when 'tempK' : @scalar*(5.0/9.0)
|
690
|
-
when 'tempF' : @scalar - 459.67
|
691
|
-
when 'tempR' : @scalar
|
692
|
-
end
|
693
|
-
|
694
|
-
else
|
695
|
-
return self.to_base.to(other) unless self.is_base?
|
696
|
-
#raise ArgumentError, "Unknown temperature conversion requested #{self.numerator}"
|
697
|
-
end
|
698
|
-
=end
|
699
|
-
#target_unit =~ /temp(C|K|F|R)/
|
700
670
|
Unit.new("#{q} #{target_unit}")
|
701
671
|
else
|
702
672
|
case other
|
@@ -775,7 +745,6 @@ class Unit < Numeric
|
|
775
745
|
|
776
746
|
# negates the scalar of the Unit
|
777
747
|
def -@
|
778
|
-
#raise ArgumentError, "Cannot negate an absolute temperature" if self.is_temperature? && ['degK','degR'].include?(self.temperature_scale)
|
779
748
|
return -@scalar if self.unitless?
|
780
749
|
self.dup * -1
|
781
750
|
end
|
@@ -923,9 +892,6 @@ class Unit < Numeric
|
|
923
892
|
end
|
924
893
|
end
|
925
894
|
|
926
|
-
|
927
|
-
|
928
|
-
|
929
895
|
# calculates the unit signature vector used by unit_signature
|
930
896
|
def unit_signature_vector
|
931
897
|
return self.to_base.unit_signature_vector unless self.is_base?
|
@@ -950,8 +916,7 @@ class Unit < Numeric
|
|
950
916
|
|
951
917
|
def initialize_copy(other)
|
952
918
|
@numerator = other.numerator.dup
|
953
|
-
@denominator = other.denominator.dup
|
954
|
-
|
919
|
+
@denominator = other.denominator.dup
|
955
920
|
end
|
956
921
|
|
957
922
|
# calculates the unit signature id for use in comparing compatible units and simplification
|
@@ -1033,8 +998,6 @@ class Unit < Numeric
|
|
1033
998
|
if unit_string =~ /\$\s*(#{NUMBER_REGEX})/
|
1034
999
|
unit_string = "#{$1} USD"
|
1035
1000
|
end
|
1036
|
-
|
1037
|
-
|
1038
1001
|
unit_string.gsub!(/%/,'percent')
|
1039
1002
|
unit_string.gsub!(/'/,'feet')
|
1040
1003
|
unit_string.gsub!(/"/,'inch')
|
@@ -1123,7 +1086,6 @@ class Unit < Numeric
|
|
1123
1086
|
@numerator = top.scan(@@UNIT_MATCH_REGEX).delete_if {|x| x.empty?}.compact if top
|
1124
1087
|
@denominator = bottom.scan(@@UNIT_MATCH_REGEX).delete_if {|x| x.empty?}.compact if bottom
|
1125
1088
|
us = "#{(top || '' + bottom || '')}".to_s.gsub(@@UNIT_MATCH_REGEX,'').gsub(/[\d\*, "'_^\/\$]/,'')
|
1126
|
-
|
1127
1089
|
raise( ArgumentError, "'#{passed_unit_string}' Unit not recognized") unless us.empty?
|
1128
1090
|
|
1129
1091
|
@numerator = @numerator.map do |item|
|
data/lib/ruby_units/string.rb
CHANGED
@@ -11,7 +11,7 @@ class String
|
|
11
11
|
def %(*args)
|
12
12
|
case args[0]
|
13
13
|
when Unit: args[0].to_s(self)
|
14
|
-
when
|
14
|
+
when (Object.const_defined?('Uncertain') && (Uncertain === args[0])): args[0].to_s(self)
|
15
15
|
when Complex: args[0].to_s
|
16
16
|
else
|
17
17
|
unit_format(*args)
|
data/lib/ruby_units/time.rb
CHANGED
@@ -28,9 +28,12 @@ class Time
|
|
28
28
|
DateTime.civil(1970,1,1)+(self.to_f+self.gmt_offset)/86400
|
29
29
|
end
|
30
30
|
|
31
|
-
|
32
|
-
|
33
|
-
|
31
|
+
# ruby 1.8.6 has a reasonable implementation of this that works well, so let's use it.
|
32
|
+
if VERSION == "1.8.4"
|
33
|
+
def to_date
|
34
|
+
x=(Date.civil(1970,1,1)+((self.to_f+self.gmt_offset)/86400.0)-0.5)
|
35
|
+
Date.civil(x.year, x.month, x.day )
|
36
|
+
end
|
34
37
|
end
|
35
38
|
|
36
39
|
def +(other)
|
data/lib/ruby_units/units.rb
CHANGED
@@ -64,7 +64,7 @@ UNIT_DEFINITIONS = {
|
|
64
64
|
'<short-ton>' => [%w{tn ton}, 907.18474, :mass, %w{<kilogram>}],
|
65
65
|
'<metric-ton>'=>[%w{tonne}, 1000, :mass, %w{<kilogram>}],
|
66
66
|
'<carat>' => [%w{ct carat carats}, 0.0002, :mass, %w{<kilogram>}],
|
67
|
-
'<pound
|
67
|
+
'<pound>' => [%w{lbs lb pound pounds #}, 0.45359237, :mass, %w{<kilogram>}],
|
68
68
|
'<ounce>' => [%w{oz ounce ounces}, 0.0283495231, :mass, %w{<kilogram>}],
|
69
69
|
'<gram>' => [%w{g gram grams gramme grammes},1e-3,:mass, %w{<kilogram>}],
|
70
70
|
|
data/test/test_ruby-units.rb
CHANGED
@@ -1,11 +1,9 @@
|
|
1
1
|
require 'test/unit'
|
2
2
|
require 'ruby-units'
|
3
3
|
require 'rubygems'
|
4
|
-
require 'uncertain'
|
4
|
+
require 'uncertain' if Gem::GemPathSearcher.new.find('uncertain')
|
5
5
|
require 'yaml'
|
6
|
-
require 'chronic'
|
7
|
-
|
8
|
-
|
6
|
+
require 'chronic' if Gem::GemPathSearcher.new.find('chronic')
|
9
7
|
|
10
8
|
class Unit < Numeric
|
11
9
|
@@USER_DEFINITIONS = {'<inchworm>' => [%w{inworm inchworm}, 0.0254, :length, %w{<meter>} ],
|
@@ -15,6 +13,7 @@ end
|
|
15
13
|
|
16
14
|
class Time
|
17
15
|
@@forced_now = nil
|
16
|
+
@@forced_gmt = nil
|
18
17
|
class << self
|
19
18
|
alias :unforced_now :now
|
20
19
|
def forced_now
|
@@ -25,8 +24,18 @@ class Time
|
|
25
24
|
def forced_now=(now)
|
26
25
|
@@forced_now = now
|
27
26
|
end
|
27
|
+
end
|
28
28
|
|
29
|
+
alias :unforced_gmt :gmt_offset
|
30
|
+
def forced_gmt
|
31
|
+
return @@forced_gmt ? @@forced_gmt : unforced_gmt
|
32
|
+
end
|
33
|
+
alias :gmt_offset :forced_gmt
|
34
|
+
|
35
|
+
def forced_gmt=(gmt)
|
36
|
+
@@forced_gmt = now
|
29
37
|
end
|
38
|
+
|
30
39
|
end
|
31
40
|
|
32
41
|
class DateTime
|
@@ -746,7 +755,7 @@ class TestRubyUnits < Test::Unit::TestCase
|
|
746
755
|
a = '1 +/- 1 mm'.unit
|
747
756
|
assert_equal a.to_s, '1 +/- 1 mm'
|
748
757
|
else
|
749
|
-
|
758
|
+
puts "Can't test Uncertain Units unless 'Uncertain' gem is installed"
|
750
759
|
end
|
751
760
|
end
|
752
761
|
|
@@ -869,7 +878,25 @@ class TestRubyUnits < Test::Unit::TestCase
|
|
869
878
|
|
870
879
|
def test_to_date
|
871
880
|
a = Time.now
|
872
|
-
assert_equal a.to_date, Date.today
|
881
|
+
assert_equal a.send(:to_date), Date.today
|
882
|
+
end
|
883
|
+
|
884
|
+
def test_natural_language
|
885
|
+
assert_equal Unit.parse("10 mm in cm"), '10 mm'.unit.to('cm')
|
873
886
|
end
|
887
|
+
|
888
|
+
def test_round_pounds
|
889
|
+
assert_equal '1 lbs'.unit, '1.1 lbs'.unit.round
|
890
|
+
end
|
891
|
+
|
892
|
+
def test_explicit_init
|
893
|
+
assert_equal '1 lbf'.unit, '1 <pound-force>'.unit
|
894
|
+
assert_equal '1 lbs'.unit, '1 <pound>'.unit
|
895
|
+
end
|
896
|
+
|
897
|
+
def test_format_nil_string
|
898
|
+
assert_nothing_raised {"" % nil}
|
899
|
+
end
|
900
|
+
|
874
901
|
end
|
875
902
|
|
metadata
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
|
-
rubygems_version: 0.9.
|
2
|
+
rubygems_version: 0.9.0
|
3
3
|
specification_version: 1
|
4
4
|
name: ruby-units
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 1.1.
|
7
|
-
date: 2007-
|
6
|
+
version: 1.1.2
|
7
|
+
date: 2007-12-13 00:00:00 -05:00
|
8
8
|
summary: A model that performs unit conversions and unit math
|
9
9
|
require_paths:
|
10
10
|
- lib
|
@@ -49,10 +49,14 @@ files:
|
|
49
49
|
- test/test_ruby-units.rb
|
50
50
|
test_files:
|
51
51
|
- test/test_ruby-units.rb
|
52
|
-
rdoc_options:
|
53
|
-
|
54
|
-
|
55
|
-
|
52
|
+
rdoc_options:
|
53
|
+
- --main
|
54
|
+
- README.txt
|
55
|
+
extra_rdoc_files:
|
56
|
+
- CHANGELOG.txt
|
57
|
+
- Manifest.txt
|
58
|
+
- README.txt
|
59
|
+
- LICENSE.txt
|
56
60
|
executables: []
|
57
61
|
|
58
62
|
extensions: []
|
@@ -67,5 +71,5 @@ dependencies:
|
|
67
71
|
requirements:
|
68
72
|
- - ">="
|
69
73
|
- !ruby/object:Gem::Version
|
70
|
-
version: 1.
|
74
|
+
version: 1.3.0
|
71
75
|
version:
|