# File lib/action_view/helpers/number_helper.rb, line 49
      def number_to_phone(number, options = {})
        return nil if number.nil?

        begin
          Float(number)
          is_number_html_safe = true
        rescue ArgumentError, TypeError
          if options[:raise]
            raise InvalidNumberError, number
          else
            is_number_html_safe = number.to_s.html_safe?
          end
        end

        number       = number.to_s.strip
        options      = options.symbolize_keys
        area_code    = options[:area_code] || nil
        delimiter    = options[:delimiter] || "-"
        extension    = options[:extension].to_s.strip || nil
        country_code = options[:country_code] || nil

        str = ""
        str << "+#{country_code}#{delimiter}" unless country_code.blank?
        str << if area_code
          number.gsub!(/([0-9]{1,3})([0-9]{3})([0-9]{4}$)/,"(\\1) \\2#{delimiter}\\3")
        else
          number.gsub!(/([0-9]{0,3})([0-9]{3})([0-9]{4})$/,"\\1#{delimiter}\\2#{delimiter}\\3")
          number.starts_with?('-') ? number.slice!(1..-1) : number
        end
        str << " x #{extension}" unless extension.blank?
        is_number_html_safe ? str.html_safe : str
      end