From 5feccc2ea3859be3483c12f399bc375a7c2e7884 Mon Sep 17 00:00:00 2001 From: "Markus \"Holli\" Holzer" Date: Sat, 30 May 2020 22:48:31 +0200 Subject: really final --- challenge-062/markus-holzer/raku/ch-1.raku | 24 ++++++++++++++---------- 1 file 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 } -- cgit