Sha256: c7c60146993f22942deb9750a340944bf3e72e0c05e9037525029a9f45b4a2a3

Contents?: true

Size: 632 Bytes

Versions: 224

Compression:

Stored size: 632 Bytes

Contents

module PhoneNumber
  NANP_PROTOCOL = %r{
    \A
    (?<international_code>1?)
    (?<area_code>[2-9]{1}[0-9]{2})
    (?<exchange_code>[2-9]{1}[0-9]{2})
    (?<subscriber>[0-9]{4})
    \z
  }x

  def self.clean(number)
    sanitized = digits_only(number)
    sections = nanp_parse(sanitized)
    format '%<area_code>s%<exchange_code>s%<subscriber>s', sections if sections
  end

  def self.digits_only(number)
    number.gsub(/\D/, '')
  end

  def self.nanp_parse(number)
    matches = number.match(NANP_PROTOCOL)
    matches.names.map(&:to_sym).zip(matches.captures).to_h if matches
  end
end

module BookKeeping
  VERSION = 2
end

Version data entries

224 entries across 224 versions & 1 rubygems

Version Path
trackler-2.2.1.180 tracks/ruby/exercises/phone-number/.meta/solutions/phone_number.rb
trackler-2.2.1.179 tracks/ruby/exercises/phone-number/.meta/solutions/phone_number.rb
trackler-2.2.1.178 tracks/ruby/exercises/phone-number/.meta/solutions/phone_number.rb
trackler-2.2.1.177 tracks/ruby/exercises/phone-number/.meta/solutions/phone_number.rb
trackler-2.2.1.176 tracks/ruby/exercises/phone-number/.meta/solutions/phone_number.rb
trackler-2.2.1.175 tracks/ruby/exercises/phone-number/.meta/solutions/phone_number.rb
trackler-2.2.1.174 tracks/ruby/exercises/phone-number/.meta/solutions/phone_number.rb
trackler-2.2.1.173 tracks/ruby/exercises/phone-number/.meta/solutions/phone_number.rb
trackler-2.2.1.172 tracks/ruby/exercises/phone-number/.meta/solutions/phone_number.rb
trackler-2.2.1.171 tracks/ruby/exercises/phone-number/.meta/solutions/phone_number.rb
trackler-2.2.1.170 tracks/ruby/exercises/phone-number/.meta/solutions/phone_number.rb
trackler-2.2.1.169 tracks/ruby/exercises/phone-number/.meta/solutions/phone_number.rb
trackler-2.2.1.167 tracks/ruby/exercises/phone-number/.meta/solutions/phone_number.rb
trackler-2.2.1.166 tracks/ruby/exercises/phone-number/.meta/solutions/phone_number.rb
trackler-2.2.1.165 tracks/ruby/exercises/phone-number/.meta/solutions/phone_number.rb
trackler-2.2.1.164 tracks/ruby/exercises/phone-number/.meta/solutions/phone_number.rb
trackler-2.2.1.163 tracks/ruby/exercises/phone-number/.meta/solutions/phone_number.rb
trackler-2.2.1.162 tracks/ruby/exercises/phone-number/.meta/solutions/phone_number.rb
trackler-2.2.1.161 tracks/ruby/exercises/phone-number/.meta/solutions/phone_number.rb
trackler-2.2.1.160 tracks/ruby/exercises/phone-number/.meta/solutions/phone_number.rb