Module: MotionSupport::NumberHelper
Instance Method Summary collapse
-
#number_to_phone(number, options = {}) ⇒ Object
Formats a
number
into a US phone number (e.g., (555) 123-9876).
Instance Method Details
#number_to_phone(number, options = {}) ⇒ Object
Formats a number
into a US phone number (e.g., (555) 123-9876). You can customize the format in the options
hash.
Options
-
:area_code
- Adds parentheses around the area code. -
:delimiter
- Specifies the delimiter to use (defaults to “-”). -
:extension
- Specifies an extension to add to the end of the generated number. -
:country_code
- Sets the country code for the phone number.
Examples
number_to_phone(5551234) # => 555-1234
number_to_phone('5551234') # => 555-1234
number_to_phone(1235551234) # => 123-555-1234
number_to_phone(1235551234, area_code: true) # => (123) 555-1234
number_to_phone(1235551234, delimiter: ' ') # => 123 555 1234
number_to_phone(1235551234, area_code: true, extension: 555) # => (123) 555-1234 x 555
number_to_phone(1235551234, country_code: 1) # => +1-123-555-1234
number_to_phone('123a456') # => 123a456
number_to_phone(1235551234, country_code: 1, extension: 1343, delimiter: '.')
# => +1.123.555.1234 x 1343
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'motion/number_helper.rb', line 30 def number_to_phone(number, = {}) return unless number = .symbolize_keys number = number.to_s.strip area_code = [:area_code] delimiter = [:delimiter] || "-" extension = [:extension] country_code = [:country_code] if area_code number.gsub!(/(\d{1,3})(\d{3})(\d{4}$)/,"(\\1) \\2#{delimiter}\\3") else number.gsub!(/(\d{0,3})(\d{3})(\d{4})$/,"\\1#{delimiter}\\2#{delimiter}\\3") number.slice!(0, 1) if number.start_with?(delimiter) && !delimiter.blank? end str = '' str << "+#{country_code}#{delimiter}" unless country_code.blank? str << number str << " x #{extension}" unless extension.blank? str end |