Top Level Namespace

Instance Method Summary collapse

Instance Method Details

#phone_number_formatter(phone_number) ⇒ Object

Raises:

  • (ArgumentError)


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/phone_number_formatter.rb', line 1

def phone_number_formatter(phone_number)
  raise ArgumentError, 'Phone Number is not a US number' unless us_number?(phone_number)

  digits = phone_number.gsub(/\D/, '')
  core = digits.chars.last(10).join('')

  e164 = "+1#{core}"
  dashed = "#{core[0..2]}-#{core[3..5]}-#{core[6..9]}"
  parens = "(#{core[0..2]}) #{core[3..5]}-#{core[6..9]}"
  parens_all_dashed = "(#{core[0..2]})-#{core[3..5]}-#{core[6..9]}"

  [
    e164,
    digits,
    core,
    dashed,
    parens,
    parens_all_dashed
  ]
end

#us_number?(phone_number) ⇒ Boolean

Returns:

  • (Boolean)


22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/phone_number_formatter.rb', line 22

def us_number?(phone_number)
  digits = phone_number.gsub(/\D/, '')

  case digits
  when digits.length == 11 && digits.start_with?('1')
    true
  when digits.length == 10
    true
  else
    false
  end
end