Sha256: 25a73101ad299dbb61d13c57f916a6e62b6267057c839109940ba8c087a5f825

Contents?: true

Size: 682 Bytes

Versions: 20

Compression:

Stored size: 682 Bytes

Contents

use v6;

class X::Phone::Invalid is Exception {
  has $.payload;
  method message {"'$!payload' is not valid."}
}

class Phone {
  has $.number;

  method new (:$number!) {
    my $validated = $number;
    $validated ~~ s:g/<:!Decimal_Number>//;
    $validated ~~ /^ 1? (\d ** 10) $/ ?? ($validated = ~$0) !! X::Phone::Invalid.new(payload => $number).throw;
    self.bless(number => $validated);
  }

  method area-code {
    $!number ~~ /\d**3/ and return ~$/;
  }

  method pretty {
    $!number ~~ /
      $<area-code> = \d**3
      $<central-office-code> = \d**3
      $<station-number> = \d**4
    / and return "($<area-code>) $<central-office-code>-$<station-number>";
  }
}

Version data entries

20 entries across 20 versions & 1 rubygems

Version Path
trackler-2.0.5.16 tracks/perl6/exercises/phone-number/Example.pm
trackler-2.0.5.15 tracks/perl6/exercises/phone-number/Example.pm
trackler-2.0.5.14 tracks/perl6/exercises/phone-number/Example.pm
trackler-2.0.5.13 tracks/perl6/exercises/phone-number/Example.pm
trackler-2.0.5.12 tracks/perl6/exercises/phone-number/Example.pm
trackler-2.0.5.11 tracks/perl6/exercises/phone-number/Example.pm
trackler-2.0.5.10 tracks/perl6/exercises/phone-number/Example.pm
trackler-2.0.5.9 tracks/perl6/exercises/phone-number/Example.pm
trackler-2.0.5.8 tracks/perl6/exercises/phone-number/Example.pm
trackler-2.0.5.7 tracks/perl6/exercises/phone-number/Example.pm
trackler-2.0.5.6 tracks/perl6/exercises/phone-number/Example.pm
trackler-2.0.5.5 tracks/perl6/exercises/phone-number/Example.pm
trackler-2.0.5.4 tracks/perl6/exercises/phone-number/Example.pm
trackler-2.0.5.3 tracks/perl6/exercises/phone-number/Example.pm
trackler-2.0.5.2 tracks/perl6/exercises/phone-number/Example.pm
trackler-2.0.5.1 tracks/perl6/exercises/phone-number/Example.pm
trackler-2.0.5.0 tracks/perl6/exercises/phone-number/Example.pm
trackler-2.0.4.0 tracks/perl6/exercises/phone-number/Example.pm
trackler-2.0.3.9 tracks/perl6/exercises/phone-number/Example.pm
trackler-2.0.3.8 tracks/perl6/exercises/phone-number/Example.pm