@@ -188,6 +188,30 @@ package Evalbot;
188
188
}
189
189
# warn "Regex: ", $regex, "\n";
190
190
191
+ sub format_names {
192
+ my ($names ) = @_ ;
193
+ # Goal: rakudo-{jvm,moar} abcde, rakudo-parrot xyzzy, foo-other
194
+ my %by_rev ;
195
+ foreach (@$names ) {
196
+ my ($name , $rev ) = @$_ ;
197
+ my ($prefix , $suffix ) = ($name , ' ' );
198
+ $name =~ / ^(.+?-)(.+)$ /
199
+ and ($prefix , $suffix ) = ($1 , $2 );
200
+ push @{$by_rev {$rev }{$prefix }}, $suffix ;
201
+ }
202
+ my @combined ;
203
+ foreach my $r (sort keys %by_rev ) {
204
+ foreach $p (sort keys %{$by_rev {$r }}) {
205
+ my $s = $by_rev {$r }{$p };
206
+ $s = @$s > 1
207
+ ? ' {' . join (' ,' , @$s ) . ' }'
208
+ : $s -> [0];
209
+ push @combined , $p . $s . ($r ? " $r " : ' ' );
210
+ }
211
+ }
212
+ return join (' , ' , @combined );
213
+ }
214
+
191
215
sub said {
192
216
my $self = shift ;
193
217
my $info = shift ;
@@ -210,13 +234,13 @@ package Evalbot;
210
234
$tmp_res =~ s | /tmp/\w {10}| /tmp/tmpfile| g ;
211
235
my $revision = ' ' ;
212
236
if (reftype($e ) eq ' HASH' && $e -> {revision }){
213
- $revision = ' ' . $e -> {revision }-> ();
237
+ $revision = $e -> {revision }-> ();
214
238
}
215
- push @{$results {$tmp_res }}, " $eval_name$revision " ;
239
+ push @{$results {$tmp_res }}, [ $eval_name , $revision ] ;
216
240
}
217
241
my $result = ' ' ;
218
242
while (my ($text , $names ) = each %results ){
219
- $result .= format_output(join ( ' , ' , @ $names ), $text );
243
+ $result .= format_output(format_names( $names ), $text );
220
244
}
221
245
return $result ;
222
246
}
0 commit comments