class ReeNumber::NumberToCurrency

def call(number, **opts)

def call(number, **opts)
  options = DEFAULTS.dup
  options[:negative_format] = "-#{opts[:format]}" if opts[:format]
  options.merge!(opts)
  number_f = Float(number, exception: false)
  if number_f
    if number_f.negative?
      number_f = number_f.abs
      options[:format] = options[:negative_format] if (number_f * 10**options[:precision]) >= 0.5
    end
    number_s = number_to_delimited(
      number_to_rounded(
        number_f, 
        **slice(options, [:precision, :significant, :strip_insignificant_zeros, :round_mode])
      ),
      **slice(options, [:delimiter, :separator])
    )
  else
    number_s = number.to_s.strip
    options[:format] = options[:negative_format] if number_s.sub!(/^-/, "")
  end
  options[:format].gsub("%n", number_s).gsub("%u", options[:unit])
end