unit class IRC::Client::Grammar::Actions; method TOP ($/) { $/.make: ($ยป.made, $) } method left-overs ($/) { $/.made: $/.defined ?? !$/ !! ''; } method message ($/) { my $pref = $/; my %args = command => ~$/; for qw/nick user host/ { $pref{$_}.defined or next; %args{$_} = $pref{$_}.Str; } %args = ~$pref if $pref.defined; my $p = $/; for ^100 { # bail out after 100 iterations; we're stuck if ( $p.defined ) { %args.append: ~$p; } if ( $p.defined ) { %args.append: ~$p; last; } $p = $p; } $/.make: %args; }