Sha256: d8c32a18faed90ab28a809714aa0f7cc82c8970aad8299ef47311b80de42908a

Contents?: true

Size: 786 Bytes

Versions: 205

Compression:

Stored size: 786 Bytes

Contents

object PhoneNumber {
  type Parts = (String, String, String)

  private[this] val AreaCodeLength = 3
  private[this] val PrefixLength = 3
  private[this] val LineNumberLength = 4

  private[this] val PhoneNumberPattern = {
    def part(length: Int) = s"(\\d{$length})"
    s"""1?${part(AreaCodeLength)}${part(PrefixLength)}${part(LineNumberLength)}""".r
  }

  def clean(phoneNumber: String): Option[String] = {
    phoneNumber filter (_.isDigit) match {
      case PhoneNumberPattern(areaCode, prefix, lineNumber) => {
        val areaCodeFirst = areaCode.head.asDigit
        val prefixFirst = prefix.head.asDigit
        if (areaCodeFirst >= 2 && prefixFirst >= 2)
          Option(areaCode + prefix + lineNumber)
        else
          None
      }
      case _ => None
    }
  }
}

Version data entries

205 entries across 205 versions & 1 rubygems

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