Module: Ruphone

Defined in:
lib/ruphone.rb,
lib/ruphone/version.rb

Constant Summary collapse

VERSION =
'0.0.2'

Class Method Summary collapse

Class Method Details

.normalize(phone, args = {}) ⇒ Object

Normalize russian phone numbers to +7XXXXXXXXXX format. Examples:

Ruphone.normalize('8921-746-95-48')
# => "+79217469548"

Ruphone.normalize('8(921) 746-95-48')
# => "+79217469548"

Ruphone.normalize('746-95-48', city_code: '+7843')
# => "+78437469548"


15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/ruphone.rb', line 15

def self.normalize(phone, args = {})
  return phone if phone.nil?

  phone = phone.tr('^0-9', '')
  return phone if phone.size.zero?

  return prefix(phone) if phone.size == 10

  if phone.size == 11
    return plus(phone) if phone.start_with?('7')
    return prefix(phone[1..-1]) if phone.start_with?('8')
  end

  city_code = normalize_city_code(args[:city_code])
  if city_code && phone.size == 11 - city_code.size
    return plus("#{city_code}#{phone}")
  end

  phone
end