seamusabshere-conversions 1.2.1 → 1.2.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/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