From 30eff16801a7533ad176cb76cace0ba3aa861336 Mon Sep 17 00:00:00 2001 From: Birte Kristina Friesel Date: Wed, 22 Nov 2023 21:22:20 +0100 Subject: Route/Part, efa: Expose via delays --- bin/efa | 21 ++++++++++++++++----- lib/Travel/Routing/DE/EFA.pm | 8 +++++--- t/21-vrr.t | 2 +- 3 files changed, 22 insertions(+), 9 deletions(-) diff --git a/bin/efa b/bin/efa index ef4c8d5..7c39ced 100755 --- a/bin/efa +++ b/bin/efa @@ -173,7 +173,7 @@ sub format_footpath { return $str; } -sub format_delay { +sub format_delay_incl { my ( $delay, $len ) = @_; if ( $delay and $len ) { return sprintf( "(%+${len}d)", $delay ); @@ -181,6 +181,14 @@ sub format_delay { return q{}; } +sub format_delay_excl { + my ( $delay, $len ) = @_; + if ( $delay and $len ) { + return sprintf( " %+${len}d ", $delay ); + } + return q{}; +} + sub display_routes { my (@routes) = @_; @@ -269,21 +277,24 @@ sub display_connection { printf( "%-5s %-${delay_fmt}s ab %-30s\n", $c->departure_time, - format_delay( $c->departure_delay, $delay_len ), + format_delay_incl( $c->departure_delay, $delay_len ), $c->departure_stop_and_platform, ); if ( $opt->{'full-route'} ) { for my $via_stop ( $c->via ) { - printf( "%-5s %-${delay_fmt}s %-30s %s\n", - $via_stop->[1], q{}, $via_stop->[2], $via_stop->[3] ); + printf( + "%-5s %-${delay_fmt}s %-30s %s\n", + $via_stop->[1], format_delay_excl( $via_stop->[4], $delay_len ), + $via_stop->[2], $via_stop->[3] + ); } } printf( "%-5s %-${delay_fmt}s an %-30s %s\n", $c->arrival_time, - format_delay( $c->arrival_delay, $delay_len ), + format_delay_incl( $c->arrival_delay, $delay_len ), $c->arrival_stop_and_platform, $occupancy ); diff --git a/lib/Travel/Routing/DE/EFA.pm b/lib/Travel/Routing/DE/EFA.pm index 79e6636..edfc918 100644 --- a/lib/Travel/Routing/DE/EFA.pm +++ b/lib/Travel/Routing/DE/EFA.pm @@ -726,8 +726,9 @@ sub parse_xml_part { next; } - my $name = $ve->getAttribute('name'); - my $platform = $ve->getAttribute('platformName'); + my $name = $ve->getAttribute('name'); + my $platform = $ve->getAttribute('platformName'); + my $arr_delay = $ve->getAttribute('arrDelay'); if ( $name eq $hash->{departure_stop} or $name eq $hash->{arrival_stop} ) @@ -741,7 +742,8 @@ sub parse_xml_part { $self->itddate_str($e_vdate), $self->itdtime_str($e_vtime), $name, - $platform + $platform, + $arr_delay, ] ); } diff --git a/t/21-vrr.t b/t/21-vrr.t index d3111b6..691bba9 100644 --- a/t/21-vrr.t +++ b/t/21-vrr.t @@ -78,7 +78,7 @@ is( $c0->arrival_time, '14:02', 'r0,0: artime' ); is( $c0->arrival_stime, '14:02', 'r0,0: astime' ); is_deeply( ($c0->via)[0], - ['27.11.2011', '13:56', 'Essen Florastr.', 'Bstg. 1'], + ['27.11.2011', '13:56', 'Essen Florastr.', 'Bstg. 1', undef], 'r0,0: via[0]'); is( $c1->delay, 3, 'r0,1: delay' ); -- cgit v1.2.3