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