Skip to content

Commit 70f502a

Browse files
authored
Merge pull request RubyMoney#199 from RubenIgnacio/add_default_minor_constant
Add DEFAULT_MINOR constant
2 parents 260851b + bf1459e commit 70f502a

File tree

1 file changed

+9
-5
lines changed

1 file changed

+9
-5
lines changed

lib/monetize/parser.rb

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@ class Parser
3535
MULTIPLIER_REGEXP = Regexp.new(format('^(.*?\d)(%s)\b([^\d]*)$', MULTIPLIER_SUFFIXES.keys.join('|')), 'i')
3636

3737
DEFAULT_DECIMAL_MARK = '.'.freeze
38+
DEFAULT_MINOR = "00".freeze
39+
private_constant :DEFAULT_MINOR
3840

3941
def initialize(input, fallback_currency = Money.default_currency, options = {})
4042
@input = input.to_s.strip
@@ -111,7 +113,7 @@ def extract_major_minor(num)
111113

112114
case used_delimiters.length
113115
when 0
114-
[num, 0]
116+
[num, DEFAULT_MINOR]
115117
when 2
116118
thousands_separator, decimal_mark = used_delimiters
117119
split_major_minor(num.gsub(thousands_separator, ''), decimal_mark)
@@ -138,7 +140,7 @@ def extract_major_minor_with_single_delimiter(num, delimiter)
138140
if delimiter == currency.decimal_mark
139141
split_major_minor(num, delimiter)
140142
elsif Monetize.enforce_currency_delimiters && delimiter == currency.thousands_separator
141-
[num.gsub(delimiter, ''), 0]
143+
[num.gsub(delimiter, ''), DEFAULT_MINOR]
142144
else
143145
extract_major_minor_with_tentative_delimiter(num, delimiter)
144146
end
@@ -148,7 +150,7 @@ def extract_major_minor_with_single_delimiter(num, delimiter)
148150
def extract_major_minor_with_tentative_delimiter(num, delimiter)
149151
if num.scan(delimiter).length > 1
150152
# Multiple matches; treat as thousands separator
151-
[num.gsub(delimiter, ''), '00']
153+
[num.gsub(delimiter, ''), DEFAULT_MINOR]
152154
else
153155
possible_major, possible_minor = split_major_minor(num, delimiter)
154156

@@ -161,7 +163,7 @@ def extract_major_minor_with_tentative_delimiter(num, delimiter)
161163
if is_decimal_mark
162164
[possible_major, possible_minor]
163165
else
164-
["#{possible_major}#{possible_minor}", '00']
166+
["#{possible_major}#{possible_minor}", DEFAULT_MINOR]
165167
end
166168
end
167169
end
@@ -185,7 +187,9 @@ def split_major_minor(num, delimiter)
185187
splits = num.split(delimiter)
186188
fail ParseError, 'Invalid amount (multiple delimiters)' if splits.length > 2
187189

188-
[splits[0], splits[1] || '00']
190+
splits[1] ||= DEFAULT_MINOR
191+
192+
splits
189193
end
190194
end
191195
end

0 commit comments

Comments
 (0)