diff options
author | Birte Kristina Friesel <derf@finalrewind.org> | 2025-01-19 11:47:30 +0100 |
---|---|---|
committer | Birte Kristina Friesel <derf@finalrewind.org> | 2025-01-19 11:47:30 +0100 |
commit | 93174faab3ab4bee831642e78e437b6f82ae65a4 (patch) | |
tree | 00120b365ff6a89594bb29866a5676d3a2955790 /bin | |
parent | a1add16883b775bf8a7032df14ed6450e4bd0811 (diff) |
Provide delay data
Diffstat (limited to 'bin')
-rwxr-xr-x | bin/dbris | 52 |
1 files changed, 46 insertions, 6 deletions
@@ -189,9 +189,13 @@ sub format_occupancy { sub format_delay { my ( $delay, $len ) = @_; + $len += 1; if ( $delay and $len ) { return sprintf( "(%+${len}d)", $delay ); } + elsif ($len) { + return q{ } x ( $len + 2 ); + } return q{}; } @@ -231,6 +235,19 @@ for my $connection ( $ris->connections ) { } } + my $max_delay_digits = max + map { length( $_->dep_delay || q{} ), length( $_->arr_delay || q{} ) } + $connection->segments; + if ($show_full_route) { + my $max_route_delay_digits = max map { + map { length( $_->arr_delay || q{} ) } + $_->route + } $connection->segments; + if ( $max_route_delay_digits > $max_delay_digits ) { + $max_delay_digits = $max_route_delay_digits; + } + } + say q{}; printf( "%s (%02d:%02d) %s %s%s%s\n\n", @@ -251,9 +268,20 @@ for my $connection ( $ris->connections ) { } } elsif ( $segment->is_walk ) { - printf( "${output_bold}%s${output_reset} %dm (≈ %d min.)\n", - $segment->walk_name, $segment->distance_m, - $segment->duration->in_units('minutes') ); + if ( $segment->distance_m ) { + printf( "${output_bold}%s${output_reset} %dm (≈ %d min.)\n", + $segment->walk_name, $segment->distance_m, + $segment->duration->in_units('minutes') ); + } + elsif ( $segment->duration->in_units('minutes') ) { + printf( "${output_bold}%s${output_reset} ≈ %d min.\n", + $segment->walk_name, + $segment->duration->in_units('minutes') ); + } + else { + printf( "${output_bold}%s${output_reset}\n", + $segment->walk_name ); + } next; } elsif ( $segment->direction ) { @@ -265,16 +293,24 @@ for my $connection ( $ris->connections ) { printf( "${output_bold}%s${output_reset}\n", $segment->train_long ); } - printf( "%s ab %s%s\n", + printf( + "%s%s ab %s%s\n", $segment->dep->strftime('%H:%M'), + $max_delay_digits + ? q{ } . format_delay( $segment->dep_delay, $max_delay_digits ) + : q{}, $segment->dep_name, $segment->dep_platform ? q{ } . $segment->dep_platform : q{}, ); if ($show_full_route) { for my $stop ( $segment->route ) { - printf( "%s %s %s%s\n", + printf( + "%s%s %s %s%s\n", $stop->arr ? $stop->arr->strftime('%H:%M') : q{ }, + $max_delay_digits + ? q{ } . format_delay( $stop->arr_delay, $max_delay_digits ) + : q{}, format_occupancy($stop), $stop->name, $stop->platform ? q{ } . $stop->platform : q{}, @@ -282,8 +318,12 @@ for my $connection ( $ris->connections ) { } } - printf( "%s an %s%s\n", + printf( + "%s%s an %s%s\n", $segment->arr->strftime('%H:%M'), + $max_delay_digits + ? q{ } . format_delay( $segment->arr_delay, $max_delay_digits ) + : q{}, $segment->arr_name, $segment->arr_platform ? q{ } . $segment->arr_platform : q{}, ); |