convers_money 0.1.3 → 1.0.0
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.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/convers_money.gemspec +1 -1
- data/lib/convers_money/version.rb +1 -1
- data/lib/convers_money.rb +40 -17
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 69c34b7aae24a455b862d3f22e03836a79a3fa45
|
4
|
+
data.tar.gz: 18b2f788e8c2ee46a50b7f0490455bbd86257f9e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ebed51488bfad055db104033f03c7f14cbada3acaef865300a324e97549da679c44369586087927b8caa6e3a9ab4b13adb21fd9fbc6703f6a7d89bce62356586
|
7
|
+
data.tar.gz: 790f608ac5bf1a2eb577a4fd2e7990232c92471ea143eb9822689de4ede05b7cf5f45130a778d919e9de0681f77e78cf2e38844f8d9f32738a3926f6bb9f9182
|
data/README.md
CHANGED
data/convers_money.gemspec
CHANGED
@@ -10,7 +10,7 @@ Gem::Specification.new do |spec|
|
|
10
10
|
spec.email = ['antonelo@gmail.com']
|
11
11
|
|
12
12
|
spec.summary = 'Money conversor'
|
13
|
-
spec.description = "ConversMoney it's a Money Conversor given by fixed currency and change rates of your choice."
|
13
|
+
spec.description = "ConversMoney it's a Money Conversor given by fixed currency and change rates of your choice. \n This version '1.0.0' it's the first full working version"
|
14
14
|
spec.homepage = 'https://github.com/nelantone/convers_money'
|
15
15
|
spec.license = 'MIT'
|
16
16
|
|
data/lib/convers_money.rb
CHANGED
@@ -1,8 +1,10 @@
|
|
1
1
|
require 'convers_money/version'
|
2
|
+
require 'pry'
|
2
3
|
|
3
4
|
# ConversMoney it's a Money Conversor given by fixed currency and change rates of your choice.
|
4
5
|
class ConversMoney
|
5
|
-
|
6
|
+
include Comparable
|
7
|
+
attr_accessor :amount, :currency
|
6
8
|
|
7
9
|
def initialize(amount, currency)
|
8
10
|
@amount = amount
|
@@ -12,8 +14,16 @@ class ConversMoney
|
|
12
14
|
|
13
15
|
def self.conversion_rates(currency, conversion_rates)
|
14
16
|
@conversion_rates ||= {}
|
15
|
-
conversion_rates = Hash[conversion_rates.map { |
|
17
|
+
conversion_rates = Hash[conversion_rates.map { |fixed_currency, rates| [fixed_currency.upcase, rates] }]
|
16
18
|
@conversion_rates.merge!(currency.upcase => conversion_rates)
|
19
|
+
unless @conversion_rates.nil? || conversion_rates.nil?
|
20
|
+
@conversion_rates.each do |fixed_currency, rates|
|
21
|
+
rates.map do |currency_rate, value|
|
22
|
+
inverse_conversion = { fixed_currency => format('%.5f', (1 / value)).to_f.round(5) }
|
23
|
+
@conversion_rates = @conversion_rates.merge( currency_rate => inverse_conversion ) unless currency.eql? currency_rate
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
17
27
|
end
|
18
28
|
|
19
29
|
def self.validate!
|
@@ -38,7 +48,7 @@ class ConversMoney
|
|
38
48
|
else
|
39
49
|
converted_amount = ConversMoney.convert!(@amount, @currency, currency)
|
40
50
|
amount_str = format('%.2f', converted_amount)
|
41
|
-
ConversMoney.new(amount_str.to_f, currency)
|
51
|
+
ConversMoney.new(amount_str.to_f.round(2), currency)
|
42
52
|
end
|
43
53
|
end
|
44
54
|
|
@@ -46,36 +56,49 @@ class ConversMoney
|
|
46
56
|
"#{format('%.2f', @amount)} #{@currency}"
|
47
57
|
end
|
48
58
|
|
59
|
+
def convert_float_to_instance(other, currency)
|
60
|
+
if other.is_a? Float
|
61
|
+
other = ConversMoney.new( other, currency)
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
49
65
|
def +(other)
|
66
|
+
if other.is_a? Float
|
67
|
+
other = ConversMoney.new( other, currency)
|
68
|
+
end
|
50
69
|
total_amount = amount + other.convert_to(currency).amount
|
51
|
-
ConversMoney.new(
|
70
|
+
ConversMoney.new(total_amount.to_f.round(2), currency)
|
52
71
|
end
|
53
72
|
|
54
73
|
def -(other)
|
74
|
+
if other.is_a? Float
|
75
|
+
other = ConversMoney.new( other, currency)
|
76
|
+
end
|
55
77
|
total_amount = amount - other.convert_to(currency).amount
|
56
|
-
ConversMoney.new(
|
78
|
+
ConversMoney.new(total_amount.to_f.round(2), currency)
|
57
79
|
end
|
58
80
|
|
59
81
|
def *(other)
|
82
|
+
if other.is_a? Float
|
83
|
+
other = ConversMoney.new( other, currency)
|
84
|
+
end
|
60
85
|
total_amount = amount * other.convert_to(currency).amount
|
61
|
-
ConversMoney.new(
|
86
|
+
ConversMoney.new(total_amount.to_f.round(2), currency)
|
62
87
|
end
|
63
88
|
|
64
89
|
def /(other)
|
90
|
+
if other.is_a? Float
|
91
|
+
other = ConversMoney.new( other, currency)
|
92
|
+
end
|
65
93
|
total_amount = amount / other.convert_to(currency).amount
|
66
|
-
ConversMoney.new(
|
67
|
-
end
|
68
|
-
|
69
|
-
def ==(other)
|
70
|
-
amount == other.convert_to(currency).amount
|
94
|
+
ConversMoney.new(total_amount.to_f.round(2), currency)
|
71
95
|
end
|
72
96
|
|
73
|
-
def
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
amount < other.convert_to(currency).amount
|
97
|
+
def <=>(other)
|
98
|
+
if other.is_a? Float
|
99
|
+
other = ConversMoney.new( other.round(2), currency)
|
100
|
+
end
|
101
|
+
amount.round(2) <=> other.convert_to(currency).amount.round(2)
|
79
102
|
end
|
80
103
|
|
81
104
|
def self.checking_fixed_currency(other, currency)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: convers_money
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Toño Serna
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-02-
|
11
|
+
date: 2017-02-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -98,8 +98,8 @@ dependencies:
|
|
98
98
|
- - ">="
|
99
99
|
- !ruby/object:Gem::Version
|
100
100
|
version: 4.6.0
|
101
|
-
description: ConversMoney it's a Money Conversor given by fixed currency and change
|
102
|
-
rates of your choice.
|
101
|
+
description: "ConversMoney it's a Money Conversor given by fixed currency and change
|
102
|
+
rates of your choice. \n This version '1.0.0' it's the first full working version"
|
103
103
|
email:
|
104
104
|
- antonelo@gmail.com
|
105
105
|
executables: []
|