aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarkus "Holli" Holzer <holli.holzer@gmail.com>2020-05-30 22:48:31 +0200
committerMarkus "Holli" Holzer <holli.holzer@gmail.com>2020-05-30 22:48:31 +0200
commit5feccc2ea3859be3483c12f399bc375a7c2e7884 (patch)
treeae52caeafe9f950e311974d57324c28d24f5e70f
parent8f6f95c4e9691ce1dddb7ae545609a661b7b9e20 (diff)
downloadperlweeklychallenge-club-5feccc2ea3859be3483c12f399bc375a7c2e7884.tar.gz
perlweeklychallenge-club-5feccc2ea3859be3483c12f399bc375a7c2e7884.tar.bz2
perlweeklychallenge-club-5feccc2ea3859be3483c12f399bc375a7c2e7884.zip
really final
-rw-r--r--challenge-062/markus-holzer/raku/ch-1.raku24
1 files changed, 14 insertions, 10 deletions
diff --git a/challenge-062/markus-holzer/raku/ch-1.raku b/challenge-062/markus-holzer/raku/ch-1.raku
index 5a1e178e39..098d35f0d0 100644
--- a/challenge-062/markus-holzer/raku/ch-1.raku
+++ b/challenge-062/markus-holzer/raku/ch-1.raku
@@ -44,15 +44,19 @@ sub output-email-addresses( $unique, @addresses ) {
?? @addresses.squish( as => *.norm )
!! @addresses }
-multi sub sort-mail-addresses( $handles where { .cache.all ~~ IO::Handle } )
-{
- my &address = -> $address { Mail.new( :$address ) }
- my &valid = -> $mail { $mail.valid || $*ERR.say("Bad data <$mail>") && False }
- my &sort = -> $a, $b { $a.domain cmp $b.domain || $a.mailbox cmp $b.mailbox }
-
+multi sub sort-mail-addresses( $handles where { .cache.all ~~ IO::Handle } ) {
$handles
.map( | *.lines )
- .map( &address )
- .grep( &valid )
- .sort( &sort )
-} \ No newline at end of file
+ .map( &make-mail )
+ .grep( &valid-mail )
+ .sort( &sort-mail ) }
+
+sub make-mail( $address ) {
+ Mail.new( :$address ) }
+
+sub valid-mail( $mail ) {
+ $mail.valid ||
+ $*ERR.say("Bad data <$mail>") && False }
+
+sub sort-mail( $a, $b ) {
+ $a.domain cmp $b.domain || $a.mailbox cmp $b.mailbox }