diff options
Diffstat (limited to 'bin/hafas-m')
-rwxr-xr-x | bin/hafas-m | 32 |
1 files changed, 26 insertions, 6 deletions
diff --git a/bin/hafas-m b/bin/hafas-m index 048e077..7b2491b 100755 --- a/bin/hafas-m +++ b/bin/hafas-m @@ -146,10 +146,14 @@ sub display_result { for my $line (@lines) { - my $d = $line->[6]; - if ( $d->messages ) { - print "\n"; - for my $msg ( $d->messages ) { + my $d = $line->[6]; + my $first_message = 1; + for my $msg ( $d->messages ) { + if ( $msg->{ref_count} == 1 ) { + if ($first_message) { + print "\n"; + $first_message = 0; + } printf( "# %s\n", $msg ); } } @@ -175,12 +179,28 @@ if ( my $err = $status->errstr ) { exit 2; } -for my $d ( $status->results() ) { +my $message_id = 1; +for my $m ( $status->messages ) { + if ( $m->{ref_count} > 1 ) { + $m->{id} = $message_id++; + printf( "# (%d) %s\n# %s\n\n", $m->{id}, $m->{header}, $m->{lead} ); + } +} + +for my $d ( $status->results ) { if ( $ignore_late and $d->delay ) { next; } + my $info_line = $d->info // q{}; + + for my $message ( $d->messages ) { + if ( $message->{ref_count} > 1 ) { + $info_line = sprintf( '(%d) %s', $message->{id}, $info_line ); + } + } + push( @output, [ @@ -191,7 +211,7 @@ for my $d ( $status->results() ) { $d->train, $d->route_end, ( $d->platform // q{} ) . ( $d->is_changed_platform ? ' !' : q{} ), - $d->info, + $info_line, $d ] ); |