# File lib/action_view/helpers/number_helper.rb, line 136
      def number_to_currency(number, options = {})
        return unless number

        options.symbolize_keys!

        options[:delimiter] = ERB::Util.html_escape(options[:delimiter]) if options[:delimiter]
        options[:separator] = ERB::Util.html_escape(options[:separator]) if options[:separator]
        options[:format] = ERB::Util.html_escape(options[:format]) if options[:format]
        options[:negative_format] = ERB::Util.html_escape(options[:negative_format]) if options[:negative_format]

        defaults  = I18n.translate('number.format''number.format', :locale => options[:locale], :default => {})
        currency  = I18n.translate('number.currency.format''number.currency.format', :locale => options[:locale], :default => {})
        currency[:negative_format] ||= "-" + currency[:format] if currency[:format]

        defaults  = DEFAULT_CURRENCY_VALUES.merge(defaults).merge!(currency)
        defaults[:negative_format] = "-" + options[:format] if options[:format]

        options   = defaults.merge!(options)

        unit      = options.delete(:unit)
        format    = options.delete(:format)

        if number.to_f < 0
          format = options.delete(:negative_format)
          number = number.respond_to?("abs") ? number.abs : number.sub(/^-/, '')
        end

        begin
          value = number_with_precision(number, options.merge(:raise => true))
          format.gsub(/%n/, ERB::Util.html_escape(value)).gsub(/%u/, ERB::Util.html_escape(unit)).html_safe
        rescue InvalidNumberError => e
          if options[:raise]
            raise
          else
            formatted_number = format.gsub(/%n/, e.number).gsub(/%u/, unit)
            e.number.to_s.html_safe? ? formatted_number.html_safe : formatted_number
          end
        end

      end