class Money::Parser::LocaleAware

def decimal_separator_resolver

ActionView's +number_to_currency+ helper will use to format the monetary amount for display.
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)

->() { MyFormattingLibrary.current_locale.decimal.separator }
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)

Returns:
  • (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