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