seamusabshere-conversions 1.2.1 → 1.2.2

Sign up to get free protection for your applications and to get access to all the features.
data/conversions.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |spec|
2
2
  spec.name = "conversions"
3
- spec.version = "1.2.1"
3
+ spec.version = "1.2.2"
4
4
 
5
5
  spec.author = "Manfred Stienstra"
6
6
  spec.email = "manfred@fngtps.com"
@@ -29,18 +29,28 @@ module Conversions #:nodoc
29
29
  end
30
30
 
31
31
  def self.conversion #:nodoc:
32
- if !defined? @@conversion
33
- @@conversion = {}
34
- CONVERSION.each do |from, conversion|
35
- conversion.each do |to, value|
36
- @@conversion[from] ||= {}
37
- @@conversion[from][to] = value
38
- @@conversion[to] ||= {}
39
- @@conversion[to][from] = 1.0 / value
40
- end
32
+ map_conversion if !defined? @@conversion
33
+ @@conversion
34
+ end
35
+
36
+ def self.register(from, to, value)
37
+ CONVERSION.merge!(from.to_sym => { to.to_sym => value.to_f })
38
+ map_conversion
39
+ Numeric.send :include, Conversions::Ext
40
+ end
41
+
42
+ private
43
+
44
+ def self.map_conversion
45
+ @@conversion = {}
46
+ CONVERSION.each do |from, conversion|
47
+ conversion.each do |to, value|
48
+ @@conversion[from] ||= {}
49
+ @@conversion[from][to] = value
50
+ @@conversion[to] ||= {}
51
+ @@conversion[to][from] = 1.0 / value
41
52
  end
42
53
  end
43
- @@conversion
44
54
  end
45
55
  end
46
56
  end
data/test/unit_test.rb CHANGED
@@ -38,4 +38,11 @@ class UnitTest < Test::Unit::TestCase
38
38
  assert_equal 1.0, Conversions::Unit.new(1.0, unit).to(unit, 2)
39
39
  end
40
40
  end
41
+
42
+ def test_register
43
+ Conversions::Unit.register(:dollars, :cents, 100.0)
44
+ assert_in_delta 0.01, Conversions::Unit.exchange_rate(:cents, :dollars), DELTA
45
+ amount = Conversions::Unit.new(10.0, :dollars)
46
+ assert_equal 1000.0, amount.to(:cents, 2), DELTA
47
+ end
41
48
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: seamusabshere-conversions
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.1
4
+ version: 1.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Manfred Stienstra