From 3d9651428a6bd1482d64ef80dbaf6b6e319cf11d Mon Sep 17 00:00:00 2001 From: Ruben Ignacio Guzman Zamora Date: Thu, 22 Jan 2026 09:53:53 -0500 Subject: [PATCH 1/2] Add DEFAULT_MINOR constant --- lib/monetize/parser.rb | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/lib/monetize/parser.rb b/lib/monetize/parser.rb index ca29cbc88..2b221d941 100644 --- a/lib/monetize/parser.rb +++ b/lib/monetize/parser.rb @@ -35,6 +35,7 @@ class Parser MULTIPLIER_REGEXP = Regexp.new(format('^(.*?\d)(%s)\b([^\d]*)$', MULTIPLIER_SUFFIXES.keys.join('|')), 'i') DEFAULT_DECIMAL_MARK = '.'.freeze + DEFAULT_MINOR = "00".freeze def initialize(input, fallback_currency = Money.default_currency, options = {}) @input = input.to_s.strip @@ -111,7 +112,7 @@ def extract_major_minor(num) case used_delimiters.length when 0 - [num, 0] + [num, DEFAULT_MINOR] when 2 thousands_separator, decimal_mark = used_delimiters split_major_minor(num.gsub(thousands_separator, ''), decimal_mark) @@ -138,7 +139,7 @@ def extract_major_minor_with_single_delimiter(num, delimiter) if delimiter == currency.decimal_mark split_major_minor(num, delimiter) elsif Monetize.enforce_currency_delimiters && delimiter == currency.thousands_separator - [num.gsub(delimiter, ''), 0] + [num.gsub(delimiter, ''), DEFAULT_MINOR] else extract_major_minor_with_tentative_delimiter(num, delimiter) end @@ -148,7 +149,7 @@ def extract_major_minor_with_single_delimiter(num, delimiter) def extract_major_minor_with_tentative_delimiter(num, delimiter) if num.scan(delimiter).length > 1 # Multiple matches; treat as thousands separator - [num.gsub(delimiter, ''), '00'] + [num.gsub(delimiter, ''), DEFAULT_MINOR] else possible_major, possible_minor = split_major_minor(num, delimiter) @@ -161,7 +162,7 @@ def extract_major_minor_with_tentative_delimiter(num, delimiter) if is_decimal_mark [possible_major, possible_minor] else - ["#{possible_major}#{possible_minor}", '00'] + ["#{possible_major}#{possible_minor}", DEFAULT_MINOR] end end end @@ -185,7 +186,9 @@ def split_major_minor(num, delimiter) splits = num.split(delimiter) fail ParseError, 'Invalid amount (multiple delimiters)' if splits.length > 2 - [splits[0], splits[1] || '00'] + splits[1] ||= DEFAULT_MINOR + + splits end end end From bf1459e5e05396203773052ebedabeacbd021216 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rub=C3=A9n=20Ignacio=20Guzm=C3=A1n=20Zamora?= Date: Fri, 23 Jan 2026 09:14:36 -0500 Subject: [PATCH 2/2] Update lib/monetize/parser.rb Co-authored-by: Sunny Ripert --- lib/monetize/parser.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/monetize/parser.rb b/lib/monetize/parser.rb index 2b221d941..e1cf8ddbd 100644 --- a/lib/monetize/parser.rb +++ b/lib/monetize/parser.rb @@ -36,6 +36,7 @@ class Parser DEFAULT_DECIMAL_MARK = '.'.freeze DEFAULT_MINOR = "00".freeze + private_constant :DEFAULT_MINOR def initialize(input, fallback_currency = Money.default_currency, options = {}) @input = input.to_s.strip