From 58fe3b8be3c434610354e9954e630da3146cc01a Mon Sep 17 00:00:00 2001 From: Birte Kristina Friesel Date: Sat, 11 Nov 2023 00:44:22 +0100 Subject: expose transfer times between consecutive connection sections --- bin/hafas | 18 ++++++++++++++++-- lib/Travel/Routing/DE/HAFAS/Connection.pm | 10 ++++++++++ lib/Travel/Routing/DE/HAFAS/Connection/Section.pm | 13 ++++++++++++- 3 files changed, 38 insertions(+), 3 deletions(-) diff --git a/bin/hafas b/bin/hafas index 0d89c9f..b36b337 100755 --- a/bin/hafas +++ b/bin/hafas @@ -254,8 +254,22 @@ for my $res ( @{ $hafas->{results} } ) { # say "# cancelled\n"; #} - my $glance = join( ' - ', - map { $_->name } grep { $_->type eq 'JNY' } $res->sections ); + my $glance = q{}; + for my $sec ( $res->sections ) { + if ( $sec->type ne 'JNY' ) { + next; + } + if ( defined $sec->transfer_duration ) { + $glance .= sprintf( + ' (%01d:%02d) %s', + $sec->transfer_duration->in_units( 'hours', 'minutes' ), + $sec->name + ); + } + else { + $glance .= $sec->name; + } + } printf( "# %02d:%02d %s %s\n", diff --git a/lib/Travel/Routing/DE/HAFAS/Connection.pm b/lib/Travel/Routing/DE/HAFAS/Connection.pm index 1eee1bd..9a9e28b 100644 --- a/lib/Travel/Routing/DE/HAFAS/Connection.pm +++ b/lib/Travel/Routing/DE/HAFAS/Connection.pm @@ -89,6 +89,16 @@ sub new { ); } + my $prev; + for my $sec (@sections) { + if ( $sec->type eq 'JNY' ) { + if ($prev) { + $sec->set_transfer_from_previous_section($prev); + } + $prev = $sec; + } + } + my $tco = {}; for my $tco_id ( @{ $connection->{dTrnCmpSX}{tcocX} // [] } ) { my $tco_kv = $opt{common}{tcocL}[$tco_id]; diff --git a/lib/Travel/Routing/DE/HAFAS/Connection/Section.pm b/lib/Travel/Routing/DE/HAFAS/Connection/Section.pm index 9120e69..a31f57a 100644 --- a/lib/Travel/Routing/DE/HAFAS/Connection/Section.pm +++ b/lib/Travel/Routing/DE/HAFAS/Connection/Section.pm @@ -13,7 +13,7 @@ use Travel::Routing::DE::HAFAS::Utils; our $VERSION = '0.00'; Travel::Routing::DE::HAFAS::Connection::Section->mk_ro_accessors( - qw(type schep_dep rt_dep sched_arr rt_arr dep_datetime arr_datetime arr_delay dep_delay journey distance duration dep_loc arr_loc + qw(type schep_dep rt_dep sched_arr rt_arr dep_datetime arr_datetime arr_delay dep_delay journey distance duration transfer_duration dep_loc arr_loc operator id name category category_long class number line line_no load delay direction) ); @@ -132,6 +132,17 @@ sub new { # }}} +# {{{ Private + +sub set_transfer_from_previous_section { + my ( $self, $prev_sec ) = @_; + + my $delta = $self->dep_datetime - $prev_sec->arr_datetime; + $self->{transfer_duration} = $delta; +} + +# }}} + # {{{ Accessors sub messages { -- cgit v1.2.3