class Money::Parser::LocaleAware
def decimal_separator_resolver
The +Proc+ called to get the current locale decimal separator. In Rails apps this defaults to the same lookup
def decimal_separator_resolver @decimal_separator_resolver end
def decimal_separator_resolver=(proc)
Money::Parser::LocaleAware.decimal_separator_resolver =
@example
Set the default +Proc+ to determine the current locale decimal separator.
def decimal_separator_resolver=(proc) @decimal_separator_resolver = proc end
def parse(input, currency, strict: false, decimal_separator: decimal_separator_resolver&.call)
-
(Money, nil)
-
Parameters:
-
decimal_separator
(String
) -- -
strict
(Boolean
) -- -
currency
(String, Money::Currency
) -- -
input
(String
) --
def parse(input, currency, strict: false, decimal_separator: decimal_separator_resolver&.call) raise ArgumentError, "decimal separator cannot be nil" unless decimal_separator currency = Money::Helpers.value_to_currency(currency) return unless currency normalized_input = input .tr('-0-9.,、、', '-0-9.,,,') .gsub(/[^\d\-#{Regexp.escape(decimal_separator)}]/, '') .gsub(decimal_separator, '.') amount = BigDecimal(normalized_input, exception: false) if amount Money.new(amount, currency) elsif strict raise ArgumentError, "unable to parse input=\"#{input}\" currency=\"#{currency}\"" end end