monetize 1.7.0 → 1.8.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 24efb7c5a6f63618a6cd3988dfbb28513b89ca7d
4
- data.tar.gz: 76318b62fc23e62f3ab4ad605b4e5cc5d0679fd0
3
+ metadata.gz: 2a6b1289754e6b83edb823b89e503d483cef3702
4
+ data.tar.gz: 7a8101c6719d5fb91f79ec85be449520ada30225
5
5
  SHA512:
6
- metadata.gz: 962f9763ab9f0ba52a3c3b1903be90c08a1d2111e382ece0db00f3fe08a01e8cb36761fb0dca828139e88fb1c01f40c8eda1be21d09ef91d876674095534f0f9
7
- data.tar.gz: a409f99aede0565c349075817200296ab79e2765f78f63baa0ad98a39dbd0160df6efe2ec846aa1120d16a7c340341ff7145ca8dc04c8e26956cb7532a2c7bb7
6
+ metadata.gz: bd40b6b99cc913a0e8f65bad08f7d1ab0ad06a0117f5b1038e4fb43a559b04a0812bdd28e0826005f979f565ba9e6a404fa73e617457c7d5ea0c0d43b8480f93
7
+ data.tar.gz: e356b03bf3a1c5ad46ab0725e1c99e1bd52723e451f28e1c68f3b6dbfe3529d21a5750046a595f0c7c2b7f6de10c71f1abfa02d10caa3ef71d056ec04a4e0085
@@ -3,10 +3,10 @@ language: ruby
3
3
  rvm:
4
4
  - 1.9.3
5
5
  - 2.0.0
6
- - 2.1.9
7
- - 2.2.5
8
- - 2.3.1
9
- - 2.4.0
6
+ - 2.1.10
7
+ - 2.2.7
8
+ - 2.3.4
9
+ - 2.4.1
10
10
  - jruby-9.0.5.0
11
11
  script: bundle exec rspec spec
12
12
  notifications:
@@ -1,6 +1,11 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.8.0
4
+ - Money version updated to 6.11.2
5
+ - Fix rounding problem in `.from_bigdecimal`
6
+
3
7
  ## 1.7.0
8
+ - Add South Korean Won currency
4
9
  - Money version updated to 6.9
5
10
  - Coveralls version update to 0.8.20
6
11
  - Add South Korean Won currency
@@ -11,47 +16,63 @@
11
16
  - Money version updated to 6.8
12
17
 
13
18
  ## 1.5.0
19
+ - Fix issue where parsing a Money object resulted in a Money object with its currency set to `Money.default_currency`,
20
+ rather than the currency that it was sent in as.
14
21
  - Add extra currencies:
15
22
  - Azerbaijani manat
16
23
  - Chinese yuan
17
24
  - Czech koruna
18
25
  - Hungarian forint
19
- - Indinan rupee
26
+ - Indian rupee
20
27
  - Russian ruble
21
28
  - Turkish Lira
22
29
  - Ukrainian Hryvnia
23
30
  - Swiss Frank
24
31
  - Polish Zloty
25
32
  - Kazakhstani Tenge
26
- - Parsing a Money object returns it unchanged
27
- - Fix issue with loosing precision on BigDecimal input
33
+ - Fix issue with losing precision on BigDecimal input
28
34
  - Add Swedish krona
29
- - Exclud ambiguous kr symbol from parsing
35
+ - Exclude ambiguous kr symbol from parsing
30
36
  - Fix JPY parsing
31
- - Sublcass all errors to Monetize::Error
37
+ - Subclass all errors to Monetize::Error
32
38
  - Fix ruby 1.9.3 compatibility
33
39
  - Suppress errors when using parse. Use `parse!` instead
34
40
  - Strip currency symbol prefix when parsing input
35
41
 
36
42
  ## 1.4.0
43
+ - Fixed support for <code>Money.infinite_precision = true</code> in .to_money
44
+ - Add Rubocop config to project
45
+ - Reformat code to adapt to Rubocop guidelines
46
+ - Add config setting to always enforce currency delimiters
47
+ - Add rake console task
37
48
  - Required Forwardable on Collection to resolve NameError [\#44](https://github.com/RubyMoney/monetize/issues/44)
38
49
  - Add capability to parse currency amounts given with suffixes (K, M, B, and T)
39
50
 
51
+ ## 1.3.1
52
+ - Updated Money version dependency to 6.6
53
+
40
54
  ## 1.3.0
41
- - Add NilClass extension
42
- - Added correct parsing of Brazilian Real $R symbol
43
- - Add testing task for Brazilian Real parsing
44
55
  - Add Lira Sign (₤) as a symbol for GBP
45
56
 
46
- ## 1.3.1
47
- - Updated Money version dependency to 6.6
57
+ ## 1.2.0
58
+ - Add support for parsing Yen symbol
59
+ - Add `Monetize.parse_collection` and `Monetize::Collection` class for parsing multiple values
60
+ - Add parsing of C$ for Canadian Dollar
61
+ - Add NilClass extension
62
+ - Add Hash extension
48
63
 
49
- ## master
50
- - Fixed support for <code>Money.infinite_precision = true</code> in .to_money
51
- - Add Rubocop config to project
52
- - Reformat code to adapt to Rubocop guidelines
53
- - Add config setting to always enforce currency delimiters
54
- - Add rake console task
55
- - Fix issue where parsing a Money object resulted in a Money object with its currency set to `Money.default_currency`,
56
- rather than the currency that it was sent in as.
57
- - Add South Korean Won currency
64
+ ## 1.1.0
65
+ - Add :assume_from_symbol option to #parse
66
+ - Enable #parse to detect currency with signed amounts
67
+ - Updated Money version dependency to 6.5.0
68
+
69
+ ## 1.0.0
70
+ - Updated Money version dependency to 6.4.0
71
+
72
+ ## 0.4.1
73
+ - Updated Money version dependency to 6.2.1
74
+
75
+ ## 0.4.0
76
+ - Added correct parsing of Brazilian Real $R symbol
77
+ - Add testing task for Brazilian Real parsing
78
+ - Updated Money version dependency to 6.2.0
@@ -4,41 +4,10 @@ require 'money'
4
4
  require 'monetize/core_extensions'
5
5
  require 'monetize/errors'
6
6
  require 'monetize/version'
7
- require 'collection'
7
+ require 'monetize/parser'
8
+ require 'monetize/collection'
8
9
 
9
10
  module Monetize
10
- CURRENCY_SYMBOLS = {
11
- '$' => 'USD',
12
- '€' => 'EUR',
13
- '£' => 'GBP',
14
- '₤' => 'GBP',
15
- 'R$' => 'BRL',
16
- 'R' => 'ZAR',
17
- '¥' => 'JPY',
18
- 'C$' => 'CAD',
19
- '₼' => 'AZN',
20
- '元' => 'CNY',
21
- 'Kč' => 'CZK',
22
- 'Ft' => 'HUF',
23
- '₹' => 'INR',
24
- '₽' => 'RUB',
25
- '₺' => 'TRY',
26
- '₴' => 'UAH',
27
- 'Fr' => 'CHF',
28
- 'zł' => 'PLN',
29
- '₸' => 'KZT',
30
- "₩" => 'KRW',
31
- }
32
-
33
- MULTIPLIER_SUFFIXES = {
34
- 'K' => 3,
35
- 'M' => 6,
36
- 'B' => 9,
37
- 'T' => 12
38
- }
39
- MULTIPLIER_SUFFIXES.default = 0
40
- MULTIPLIER_REGEXP = Regexp.new(format('^(.*?\d)(%s)\b([^\d]*)$', MULTIPLIER_SUFFIXES.keys.join('|')), 'i')
41
-
42
11
  # Class methods
43
12
  class << self
44
13
  # @attr_accessor [true, false] assume_from_symbol Use this to enable the
@@ -62,19 +31,10 @@ module Monetize
62
31
  return input if input.is_a?(Money)
63
32
  return from_numeric(input, currency) if input.is_a?(Numeric)
64
33
 
65
- input = input.to_s.strip
66
-
67
- computed_currency = if options.fetch(:assume_from_symbol) { assume_from_symbol }
68
- compute_currency(input)
69
- else
70
- input[/[A-Z]{2,3}/]
71
- end
72
-
73
- currency = computed_currency || currency || Money.default_currency
74
- currency = Money::Currency.wrap(currency)
34
+ parser = Monetize::Parser.new(input, currency, options)
35
+ currency_from_input = Money::Currency.wrap(parser.parse_currency)
75
36
 
76
- fractional = extract_cents(input, currency)
77
- Money.new(fractional, currency)
37
+ Money.new(parser.parse_cents(currency_from_input), currency_from_input)
78
38
  rescue Money::Currency::UnknownCurrency => e
79
39
  fail ParseError, e.message
80
40
  end
@@ -101,10 +61,7 @@ module Monetize
101
61
  end
102
62
 
103
63
  def self.from_bigdecimal(value, currency = Money.default_currency)
104
- currency = Money::Currency.wrap(currency)
105
- value *= currency.subunit_to_unit
106
- value = value.round unless Money.infinite_precision
107
- Money.new(value, currency)
64
+ Money.from_amount(value, currency)
108
65
  end
109
66
 
110
67
  def self.from_numeric(value, currency = Money.default_currency)
@@ -120,137 +77,6 @@ module Monetize
120
77
  end
121
78
 
122
79
  def self.extract_cents(input, currency = Money.default_currency)
123
- multiplier_exp, input = extract_multiplier(input)
124
-
125
- num = input.gsub(/(?:^#{currency.symbol}|[^\d.,'-]+)/, '')
126
-
127
- negative, num = extract_sign(num)
128
-
129
- num.chop! if num.match(/[\.|,]$/)
130
-
131
- major, minor = extract_major_minor(num, currency)
132
-
133
- major, minor = apply_multiplier(multiplier_exp, major.to_i, minor)
134
-
135
- cents = major.to_i * currency.subunit_to_unit
136
-
137
- cents += set_minor_precision(minor, currency)
138
-
139
- apply_sign(negative, cents)
140
- end
141
-
142
- private
143
-
144
- def self.apply_multiplier(multiplier_exp, major, minor)
145
- major *= 10**multiplier_exp
146
- minor = minor.to_s + ('0' * multiplier_exp)
147
- shift = minor[0...multiplier_exp].to_i
148
- major += shift
149
- minor = (minor[multiplier_exp..-1] || '')
150
- [major, minor]
151
- end
152
-
153
- def self.apply_sign(negative, cents)
154
- negative ? cents * -1 : cents
155
- end
156
-
157
- def self.contains_currency_symbol?(amount)
158
- amount =~ currency_symbol_regex
159
- end
160
-
161
- def self.compute_currency(amount)
162
- if contains_currency_symbol?(amount)
163
- matches = amount.match(currency_symbol_regex)
164
- CURRENCY_SYMBOLS[matches[:symbol]]
165
- else
166
- amount[/[A-Z]{2,3}/]
167
- end
168
- end
169
-
170
- def self.extract_major_minor(num, currency)
171
- used_delimiters = num.scan(/[^\d]/).uniq
172
-
173
- case used_delimiters.length
174
- when 0
175
- [num, 0]
176
- when 2
177
- thousands_separator, decimal_mark = used_delimiters
178
- split_major_minor(num.gsub(thousands_separator, ''), decimal_mark)
179
- when 1
180
- extract_major_minor_with_single_delimiter(num, currency, used_delimiters.first)
181
- else
182
- fail ParseError, 'Invalid amount'
183
- end
184
- end
185
-
186
- def self.extract_major_minor_with_single_delimiter(num, currency, delimiter)
187
- if delimiter == currency.decimal_mark
188
- split_major_minor(num, delimiter)
189
- elsif enforce_currency_delimiters and delimiter == currency.thousands_separator
190
- [num.gsub(delimiter, ''), 0]
191
- else
192
- extract_major_minor_with_tentative_delimiter(num, delimiter)
193
- end
194
- end
195
-
196
- def self.extract_major_minor_with_tentative_delimiter(num, delimiter)
197
- if num.scan(delimiter).length > 1
198
- # Multiple matches; treat as thousands separator
199
- [num.gsub(delimiter, ''), '00']
200
- else
201
- possible_major, possible_minor = split_major_minor(num, delimiter)
202
-
203
- if possible_minor.length != 3 or possible_major.length > 3 or delimiter == '.'
204
- # Doesn't look like thousands separator
205
- [possible_major, possible_minor]
206
- else
207
- ["#{possible_major}#{possible_minor}", '00']
208
- end
209
- end
210
- end
211
-
212
- def self.extract_multiplier(input)
213
- if (matches = MULTIPLIER_REGEXP.match(input))
214
- multiplier_suffix = matches[2].upcase
215
- [MULTIPLIER_SUFFIXES[multiplier_suffix], "#{$1}#{$3}"]
216
- else
217
- [0, input]
218
- end
219
- end
220
-
221
- def self.extract_sign(input)
222
- result = (input =~ /^-+(.*)$/ or input =~ /^(.*)-+$/) ? [true, $1] : [false, input]
223
- fail ParseError, 'Invalid amount (hyphen)' if result[1].include?('-')
224
- result
225
- end
226
-
227
- def self.regex_safe_symbols
228
- CURRENCY_SYMBOLS.keys.map { |key| Regexp.escape(key) }.join('|')
229
- end
230
-
231
- def self.set_minor_precision(minor, currency)
232
- if Money.infinite_precision
233
- (BigDecimal.new(minor) / (10**minor.size)) * currency.subunit_to_unit
234
- elsif minor.size < currency.decimal_places
235
- (minor + ('0' * currency.decimal_places))[0, currency.decimal_places].to_i
236
- elsif minor.size > currency.decimal_places
237
- if minor[currency.decimal_places, 1].to_i >= 5
238
- minor[0, currency.decimal_places].to_i + 1
239
- else
240
- minor[0, currency.decimal_places].to_i
241
- end
242
- else
243
- minor.to_i
244
- end
245
- end
246
-
247
- def self.split_major_minor(num, delimiter)
248
- major, minor = num.split(delimiter)
249
- minor = '00' unless minor
250
- [major, minor]
251
- end
252
-
253
- def self.currency_symbol_regex
254
- /\A[\+|\-]?(?<symbol>#{regex_safe_symbols})/
80
+ Monetize::Parser.new(input).parse_cents(currency)
255
81
  end
256
82
  end
@@ -1,6 +1,5 @@
1
1
  # encoding: utf-8
2
2
 
3
- require 'monetize'
4
3
  require 'forwardable'
5
4
 
6
5
  module Monetize
@@ -0,0 +1,185 @@
1
+ # encoding: utf-8
2
+
3
+ module Monetize
4
+ class Parser
5
+ CURRENCY_SYMBOLS = {
6
+ '$' => 'USD',
7
+ '€' => 'EUR',
8
+ '£' => 'GBP',
9
+ '₤' => 'GBP',
10
+ 'R$' => 'BRL',
11
+ 'R' => 'ZAR',
12
+ '¥' => 'JPY',
13
+ 'C$' => 'CAD',
14
+ '₼' => 'AZN',
15
+ '元' => 'CNY',
16
+ 'Kč' => 'CZK',
17
+ 'Ft' => 'HUF',
18
+ '₹' => 'INR',
19
+ '₽' => 'RUB',
20
+ '₺' => 'TRY',
21
+ '₴' => 'UAH',
22
+ 'Fr' => 'CHF',
23
+ 'zł' => 'PLN',
24
+ '₸' => 'KZT',
25
+ "₩" => 'KRW',
26
+ }
27
+
28
+ MULTIPLIER_SUFFIXES = { 'K' => 3, 'M' => 6, 'B' => 9, 'T' => 12 }
29
+ MULTIPLIER_SUFFIXES.default = 0
30
+ MULTIPLIER_REGEXP = Regexp.new(format('^(.*?\d)(%s)\b([^\d]*)$', MULTIPLIER_SUFFIXES.keys.join('|')), 'i')
31
+
32
+ def initialize(input, fallback_currency = Money.default_currency, options = {})
33
+ @input = input.to_s.strip
34
+ @fallback_currency = fallback_currency
35
+ @options = options
36
+ end
37
+
38
+ def parse_cents(currency)
39
+ multiplier_exp, input = extract_multiplier
40
+
41
+ num = input.gsub(/(?:^#{currency.symbol}|[^\d.,'-]+)/, '')
42
+
43
+ negative, num = extract_sign(num)
44
+
45
+ num.chop! if num.match(/[\.|,]$/)
46
+
47
+ major, minor = extract_major_minor(num, currency)
48
+
49
+ major, minor = apply_multiplier(multiplier_exp, major.to_i, minor)
50
+
51
+ cents = major.to_i * currency.subunit_to_unit
52
+
53
+ cents += set_minor_precision(minor, currency)
54
+
55
+ apply_sign(negative, cents)
56
+ end
57
+
58
+ def parse_currency
59
+ computed_currency = if options.fetch(:assume_from_symbol) { Monetize.assume_from_symbol }
60
+ compute_currency
61
+ else
62
+ input[/[A-Z]{2,3}/]
63
+ end
64
+
65
+ computed_currency || fallback_currency || Money.default_currency
66
+ end
67
+
68
+ private
69
+
70
+ attr_reader :input, :fallback_currency, :options
71
+
72
+ def apply_multiplier(multiplier_exp, major, minor)
73
+ major *= 10**multiplier_exp
74
+ minor = minor.to_s + ('0' * multiplier_exp)
75
+ shift = minor[0...multiplier_exp].to_i
76
+ major += shift
77
+ minor = (minor[multiplier_exp..-1] || '')
78
+ [major, minor]
79
+ end
80
+
81
+ def apply_sign(negative, cents)
82
+ negative ? cents * -1 : cents
83
+ end
84
+
85
+ def contains_currency_symbol?
86
+ input =~ currency_symbol_regex
87
+ end
88
+
89
+ def compute_currency
90
+ if contains_currency_symbol?
91
+ matches = input.match(currency_symbol_regex)
92
+ CURRENCY_SYMBOLS[matches[:symbol]]
93
+ else
94
+ input[/[A-Z]{2,3}/]
95
+ end
96
+ end
97
+
98
+ def extract_major_minor(num, currency)
99
+ used_delimiters = num.scan(/[^\d]/).uniq
100
+
101
+ case used_delimiters.length
102
+ when 0
103
+ [num, 0]
104
+ when 2
105
+ thousands_separator, decimal_mark = used_delimiters
106
+ split_major_minor(num.gsub(thousands_separator, ''), decimal_mark)
107
+ when 1
108
+ extract_major_minor_with_single_delimiter(num, currency, used_delimiters.first)
109
+ else
110
+ fail ParseError, 'Invalid amount'
111
+ end
112
+ end
113
+
114
+ def extract_major_minor_with_single_delimiter(num, currency, delimiter)
115
+ if delimiter == currency.decimal_mark
116
+ split_major_minor(num, delimiter)
117
+ elsif Monetize.enforce_currency_delimiters and delimiter == currency.thousands_separator
118
+ [num.gsub(delimiter, ''), 0]
119
+ else
120
+ extract_major_minor_with_tentative_delimiter(num, delimiter)
121
+ end
122
+ end
123
+
124
+ def extract_major_minor_with_tentative_delimiter(num, delimiter)
125
+ if num.scan(delimiter).length > 1
126
+ # Multiple matches; treat as thousands separator
127
+ [num.gsub(delimiter, ''), '00']
128
+ else
129
+ possible_major, possible_minor = split_major_minor(num, delimiter)
130
+
131
+ if possible_minor.length != 3 or possible_major.length > 3 or delimiter == '.'
132
+ # Doesn't look like thousands separator
133
+ [possible_major, possible_minor]
134
+ else
135
+ ["#{possible_major}#{possible_minor}", '00']
136
+ end
137
+ end
138
+ end
139
+
140
+ def extract_multiplier
141
+ if (matches = MULTIPLIER_REGEXP.match(input))
142
+ multiplier_suffix = matches[2].upcase
143
+ [MULTIPLIER_SUFFIXES[multiplier_suffix], "#{$1}#{$3}"]
144
+ else
145
+ [0, input]
146
+ end
147
+ end
148
+
149
+ def extract_sign(input)
150
+ result = (input =~ /^-+(.*)$/ or input =~ /^(.*)-+$/) ? [true, $1] : [false, input]
151
+ fail ParseError, 'Invalid amount (hyphen)' if result[1].include?('-')
152
+ result
153
+ end
154
+
155
+ def regex_safe_symbols
156
+ CURRENCY_SYMBOLS.keys.map { |key| Regexp.escape(key) }.join('|')
157
+ end
158
+
159
+ def set_minor_precision(minor, currency)
160
+ if Money.infinite_precision
161
+ (BigDecimal.new(minor) / (10**minor.size)) * currency.subunit_to_unit
162
+ elsif minor.size < currency.decimal_places
163
+ (minor + ('0' * currency.decimal_places))[0, currency.decimal_places].to_i
164
+ elsif minor.size > currency.decimal_places
165
+ if minor[currency.decimal_places, 1].to_i >= 5
166
+ minor[0, currency.decimal_places].to_i + 1
167
+ else
168
+ minor[0, currency.decimal_places].to_i
169
+ end
170
+ else
171
+ minor.to_i
172
+ end
173
+ end
174
+
175
+ def split_major_minor(num, delimiter)
176
+ major, minor = num.split(delimiter)
177
+ minor = '00' unless minor
178
+ [major, minor]
179
+ end
180
+
181
+ def currency_symbol_regex
182
+ /\A[\+|\-]?(?<symbol>#{regex_safe_symbols})/
183
+ end
184
+ end
185
+ end
@@ -1,5 +1,5 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  module Monetize
4
- VERSION = '1.7.0'
4
+ VERSION = '1.8.0'
5
5
  end
@@ -19,7 +19,7 @@ Gem::Specification.new do |spec|
19
19
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
20
20
  spec.require_paths = ['lib']
21
21
 
22
- spec.add_dependency 'money', '~> 6.9'
22
+ spec.add_dependency 'money', '~> 6.11.2'
23
23
 
24
24
  spec.add_development_dependency 'bundler', '~> 1.3'
25
25
  spec.add_development_dependency 'rake'
@@ -56,7 +56,7 @@ describe Monetize do
56
56
  Monetize.assume_from_symbol = false
57
57
  end
58
58
 
59
- Monetize::CURRENCY_SYMBOLS.each_pair do |symbol, iso_code|
59
+ Monetize::Parser::CURRENCY_SYMBOLS.each_pair do |symbol, iso_code|
60
60
  context iso_code do
61
61
  let(:currency) { Money::Currency.find(iso_code) }
62
62
  let(:amount) { 5_95 }
@@ -430,6 +430,12 @@ describe Monetize do
430
430
  expect(Monetize.from_bigdecimal(BigDecimal.new('1'), 'JPY')).to eq Money.new(1, 'JPY')
431
431
  end
432
432
 
433
+ it 'respects rounding mode when rounding amount to the nearest cent' do
434
+ amount = BigDecimal.new('1.005')
435
+
436
+ expect(Monetize.from_bigdecimal(amount, 'USD')).to eq Money.from_amount(amount, 'USD')
437
+ end
438
+
433
439
  it 'accepts a currency options' do
434
440
  m = Monetize.from_bigdecimal(BigDecimal.new('1'))
435
441
  expect(m.currency).to eq Money.default_currency
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: monetize
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.7.0
4
+ version: 1.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shane Emmons
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-05-24 00:00:00.000000000 Z
11
+ date: 2018-05-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: money
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '6.9'
19
+ version: 6.11.2
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '6.9'
26
+ version: 6.11.2
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: bundler
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -83,8 +83,8 @@ files:
83
83
  - LICENSE.txt
84
84
  - README.md
85
85
  - Rakefile
86
- - lib/collection.rb
87
86
  - lib/monetize.rb
87
+ - lib/monetize/collection.rb
88
88
  - lib/monetize/core_extensions.rb
89
89
  - lib/monetize/core_extensions/hash.rb
90
90
  - lib/monetize/core_extensions/nil_class.rb
@@ -92,6 +92,7 @@ files:
92
92
  - lib/monetize/core_extensions/string.rb
93
93
  - lib/monetize/core_extensions/symbol.rb
94
94
  - lib/monetize/errors.rb
95
+ - lib/monetize/parser.rb
95
96
  - lib/monetize/version.rb
96
97
  - monetize.gemspec
97
98
  - spec/core_extensions_spec.rb