ruby-units 0.3.5 → 0.3.6
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 +5 -1
- data/README.txt +6 -2
- data/lib/ruby-units.rb +7 -2
- data/test/test_ruby-units.rb +6 -1
- metadata +2 -2
data/CHANGELOG.txt
CHANGED
@@ -140,4 +140,8 @@ Change Log for Ruby-units
|
|
140
140
|
* Time math will now return a DateTime if it goes out of
|
141
141
|
range.
|
142
142
|
|
143
|
-
2006-11-20 0.3.5 * Minor bug fixes
|
143
|
+
2006-11-20 0.3.5 * Minor bug fixes
|
144
|
+
* to_int now coerces the result to an actual Integer,
|
145
|
+
but only works properly for unitless Units.
|
146
|
+
|
147
|
+
2006-12-05 0.3.6 * Fixed bug where (unit/unit).ceil would fail
|
data/README.txt
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
=Ruby Units
|
2
2
|
|
3
|
-
Version: 0.3.
|
3
|
+
Version: 0.3.6
|
4
4
|
|
5
5
|
Kevin C. Olbrich, Ph.D.
|
6
6
|
kevin.olbrich@gmail.com
|
@@ -80,6 +80,8 @@ Units can be converted to other units in a couple of ways.
|
|
80
80
|
unit1 === unit2 # => true if units and quantity are the same, even if
|
81
81
|
'equivalent' by <=>
|
82
82
|
unit.to('ft') # convert
|
83
|
+
unit1 + unit2 >> "ft" # converts result of math to 'ft'
|
84
|
+
(unit1 + unit2).to('ft') # converts result to 'ft'
|
83
85
|
|
84
86
|
==Text Output
|
85
87
|
Units will display themselves nicely based on the preferred abbreviation for the units and prefixes.
|
@@ -98,9 +100,11 @@ The to_s also accepts some options.
|
|
98
100
|
|
99
101
|
Time, Date, and DateTime objects can have time units added or subtracted.
|
100
102
|
|
101
|
-
Time.now + "10 min".
|
103
|
+
Time.now + "10 min".unit
|
102
104
|
|
103
105
|
Several helpers have also been defined.
|
106
|
+
Note: If you include the 'Chronic' gem, you can specify times in natural
|
107
|
+
language.
|
104
108
|
|
105
109
|
'min'.since('9/18/06 3:00pm')
|
106
110
|
'min'.before('9/18/08 3:00pm')
|
data/lib/ruby-units.rb
CHANGED
@@ -2,7 +2,7 @@ require 'mathn'
|
|
2
2
|
require 'rational'
|
3
3
|
require 'date'
|
4
4
|
require 'parsedate'
|
5
|
-
# = Ruby Units 0.3.
|
5
|
+
# = Ruby Units 0.3.6
|
6
6
|
#
|
7
7
|
# Copyright 2006 by Kevin C. Olbrich, Ph.D.
|
8
8
|
#
|
@@ -40,7 +40,7 @@ require 'parsedate'
|
|
40
40
|
class Unit < Numeric
|
41
41
|
require 'units'
|
42
42
|
# pre-generate hashes from unit definitions for performance.
|
43
|
-
VERSION = '0.3.
|
43
|
+
VERSION = '0.3.6'
|
44
44
|
@@USER_DEFINITIONS = {}
|
45
45
|
@@PREFIX_VALUES = {}
|
46
46
|
@@PREFIX_MAP = {}
|
@@ -688,6 +688,7 @@ class Unit < Numeric
|
|
688
688
|
|
689
689
|
# negates the scalar of the Unit
|
690
690
|
def -@
|
691
|
+
return -@scalar if self.unitless?
|
691
692
|
Unit.new(-@scalar,@numerator,@denominator)
|
692
693
|
end
|
693
694
|
|
@@ -697,10 +698,12 @@ class Unit < Numeric
|
|
697
698
|
end
|
698
699
|
|
699
700
|
def ceil
|
701
|
+
return @scalar.ceil if self.unitless?
|
700
702
|
Unit.new(@scalar.ceil, @numerator, @denominator)
|
701
703
|
end
|
702
704
|
|
703
705
|
def floor
|
706
|
+
return @scalar.floor if self.unitless?
|
704
707
|
Unit.new(@scalar.floor, @numerator, @denominator)
|
705
708
|
end
|
706
709
|
|
@@ -718,6 +721,7 @@ class Unit < Numeric
|
|
718
721
|
alias :to_i :to_int
|
719
722
|
|
720
723
|
def truncate
|
724
|
+
return @scalar.truncate if self.unitless?
|
721
725
|
Unit.new(@scalar.truncate, @numerator, @denominator)
|
722
726
|
end
|
723
727
|
|
@@ -726,6 +730,7 @@ class Unit < Numeric
|
|
726
730
|
end
|
727
731
|
|
728
732
|
def round
|
733
|
+
return @scalar.round if self.unitless?
|
729
734
|
Unit.new(@scalar.round, @numerator, @denominator)
|
730
735
|
end
|
731
736
|
|
data/test/test_ruby-units.rb
CHANGED
@@ -509,12 +509,14 @@ class TestRubyUnits < Test::Unit::TestCase
|
|
509
509
|
unit1 = Unit.new("1.1 mm")
|
510
510
|
unit2 = Unit.new("2 mm")
|
511
511
|
assert_equal unit2, unit1.ceil
|
512
|
+
assert_equal ('1 mm'.unit / '1 mm'.unit).ceil, 1
|
512
513
|
end
|
513
514
|
|
514
515
|
def test_floor
|
515
516
|
unit1 = Unit.new("1.1 mm")
|
516
517
|
unit2 = Unit.new("1 mm")
|
517
518
|
assert_equal unit2, unit1.floor
|
519
|
+
assert_equal ('1 mm'.unit / '1 mm'.unit).floor, 1
|
518
520
|
end
|
519
521
|
|
520
522
|
def test_to_int
|
@@ -526,12 +528,14 @@ class TestRubyUnits < Test::Unit::TestCase
|
|
526
528
|
unit1 = Unit.new("1.1 mm")
|
527
529
|
unit2 = Unit.new("1 mm")
|
528
530
|
assert_equal unit2, unit1.truncate
|
531
|
+
assert_equal (unit1/unit2).truncate, 1
|
529
532
|
end
|
530
533
|
|
531
534
|
def test_round
|
532
535
|
unit1 = Unit.new("1.1 mm")
|
533
536
|
unit2 = Unit.new("1 mm")
|
534
537
|
assert_equal unit2, unit1.round
|
538
|
+
assert_equal (unit1/unit2).round, 1
|
535
539
|
end
|
536
540
|
|
537
541
|
def test_zero?
|
@@ -803,7 +807,7 @@ class TestRubyUnits < Test::Unit::TestCase
|
|
803
807
|
end
|
804
808
|
|
805
809
|
def test_zero
|
806
|
-
|
810
|
+
assert_nothing_raised { Unit.new(0) }
|
807
811
|
end
|
808
812
|
|
809
813
|
def test_divide_results_in_unitless
|
@@ -811,4 +815,5 @@ class TestRubyUnits < Test::Unit::TestCase
|
|
811
815
|
b = '10 mg/ml'.unit
|
812
816
|
assert_equal a/b, 1
|
813
817
|
end
|
818
|
+
|
814
819
|
end
|
metadata
CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.0
|
|
3
3
|
specification_version: 1
|
4
4
|
name: ruby-units
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.3.
|
7
|
-
date: 2006-
|
6
|
+
version: 0.3.6
|
7
|
+
date: 2006-12-05 00:00:00 -05:00
|
8
8
|
summary: A model that performs unit conversions and unit math
|
9
9
|
require_paths:
|
10
10
|
- lib
|