Loading bin/hafas-m +29 −6 Original line number Diff line number Diff line Loading @@ -148,8 +148,12 @@ sub show_version { exit 0; } sub parse_mot_options { sub spacer { my ($len) = @_; return ( $len % 2 ? q { } : q{} ) . ( q{ ·} x ( $len / 2 ) ); } sub parse_mot_options { my $default_yes = 1; for my $type ( split( qr{,}, $types ) ) { Loading Loading @@ -385,6 +389,7 @@ elsif ( $opt{locationSearch} ) { elsif ( $opt{journey} ) { my $result = $status->result; my @prods; my @directions; my $prev_prod = 0; printf( "%s → %s", $result->name, $result->route_end ); Loading @@ -400,6 +405,7 @@ elsif ( $opt{journey} ) { my $delay_len = 0; my $delay_fmt = 0; my $occupancy_len = 0; my $stop_len = 0; for my $stop ( $result->route ) { if ( $stop->delay ) { $delay_len = max( $delay_len, length( $stop->delay ) + 1 ); Loading @@ -408,11 +414,17 @@ elsif ( $opt{journey} ) { { $occupancy_len = 2; } if ( length( $stop->loc->name ) > $stop_len ) { $stop_len = length( $stop->loc->name ); } my $prod = $stop->prod_dep // $stop->prod_arr; if ( $prod and $prod != $prev_prod ) { push( @prods, $prod ); $prev_prod = $prod; } if ( $stop->direction ) { push( @directions, $stop->direction ); } } if ($delay_len) { $delay_fmt = $delay_len + 3; Loading @@ -424,8 +436,11 @@ elsif ( $opt{journey} ) { } } else { printf( "Betrieb: %s\n", join( q{, }, map { $_->operator } grep { $_->operator } @prods ) ); printf( "Betrieb: %s\n", join( q{, }, uniq map { $_->operator } grep { $_->operator } @prods ) ); } $prev_prod = 0; Loading Loading @@ -465,13 +480,18 @@ elsif ( $opt{journey} ) { my $prod = $stop->prod_dep // $stop->prod_arr; if ( $prod and $prod != $prev_prod ) { $prod_line = sprintf( " : %s (%s)", $prod->name, $prod->operator ); = sprintf( " %s (%s)", $prod->name, $prod->operator ); $prev_prod = $prod; } } my $dir_line = q{}; if ( @directions > 1 and $stop->direction ) { $dir_line = ' → ' . $stop->direction; } printf( "%s%5s %s %5s %-${delay_fmt}s%${occupancy_len}s%-${occupancy_len}s %s%s%s%s%s\n", "%s%5s %s %5s %-${delay_fmt}s%${occupancy_len}s%-${occupancy_len}s %s%s%s%s%s%s\n", $stop == $mark_stop ? $output_bold : q{}, $stop->arr_cancelled ? '--:--' : ( $stop->arr ? $stop->arr->strftime('%H:%M') : q{} ), Loading @@ -485,8 +505,11 @@ elsif ( $opt{journey} ) { : q{}, $stop->loc->name, $stop == $mark_stop ? $output_reset : q{}, ( $prod_line or $dir_line or $msg_line ) ? spacer( $stop_len + 1 - length( $stop->loc->name ) ) : q{}, $prod_line, $stop->direction ? sprintf( ' → %s', $stop->direction ) : q{}, $dir_line, $msg_line, ); } Loading Loading
bin/hafas-m +29 −6 Original line number Diff line number Diff line Loading @@ -148,8 +148,12 @@ sub show_version { exit 0; } sub parse_mot_options { sub spacer { my ($len) = @_; return ( $len % 2 ? q { } : q{} ) . ( q{ ·} x ( $len / 2 ) ); } sub parse_mot_options { my $default_yes = 1; for my $type ( split( qr{,}, $types ) ) { Loading Loading @@ -385,6 +389,7 @@ elsif ( $opt{locationSearch} ) { elsif ( $opt{journey} ) { my $result = $status->result; my @prods; my @directions; my $prev_prod = 0; printf( "%s → %s", $result->name, $result->route_end ); Loading @@ -400,6 +405,7 @@ elsif ( $opt{journey} ) { my $delay_len = 0; my $delay_fmt = 0; my $occupancy_len = 0; my $stop_len = 0; for my $stop ( $result->route ) { if ( $stop->delay ) { $delay_len = max( $delay_len, length( $stop->delay ) + 1 ); Loading @@ -408,11 +414,17 @@ elsif ( $opt{journey} ) { { $occupancy_len = 2; } if ( length( $stop->loc->name ) > $stop_len ) { $stop_len = length( $stop->loc->name ); } my $prod = $stop->prod_dep // $stop->prod_arr; if ( $prod and $prod != $prev_prod ) { push( @prods, $prod ); $prev_prod = $prod; } if ( $stop->direction ) { push( @directions, $stop->direction ); } } if ($delay_len) { $delay_fmt = $delay_len + 3; Loading @@ -424,8 +436,11 @@ elsif ( $opt{journey} ) { } } else { printf( "Betrieb: %s\n", join( q{, }, map { $_->operator } grep { $_->operator } @prods ) ); printf( "Betrieb: %s\n", join( q{, }, uniq map { $_->operator } grep { $_->operator } @prods ) ); } $prev_prod = 0; Loading Loading @@ -465,13 +480,18 @@ elsif ( $opt{journey} ) { my $prod = $stop->prod_dep // $stop->prod_arr; if ( $prod and $prod != $prev_prod ) { $prod_line = sprintf( " : %s (%s)", $prod->name, $prod->operator ); = sprintf( " %s (%s)", $prod->name, $prod->operator ); $prev_prod = $prod; } } my $dir_line = q{}; if ( @directions > 1 and $stop->direction ) { $dir_line = ' → ' . $stop->direction; } printf( "%s%5s %s %5s %-${delay_fmt}s%${occupancy_len}s%-${occupancy_len}s %s%s%s%s%s\n", "%s%5s %s %5s %-${delay_fmt}s%${occupancy_len}s%-${occupancy_len}s %s%s%s%s%s%s\n", $stop == $mark_stop ? $output_bold : q{}, $stop->arr_cancelled ? '--:--' : ( $stop->arr ? $stop->arr->strftime('%H:%M') : q{} ), Loading @@ -485,8 +505,11 @@ elsif ( $opt{journey} ) { : q{}, $stop->loc->name, $stop == $mark_stop ? $output_reset : q{}, ( $prod_line or $dir_line or $msg_line ) ? spacer( $stop_len + 1 - length( $stop->loc->name ) ) : q{}, $prod_line, $stop->direction ? sprintf( ' → %s', $stop->direction ) : q{}, $dir_line, $msg_line, ); } Loading