From 3c897ad62aa556b75216ad042631dbe3ff7ed06a Mon Sep 17 00:00:00 2001 From: Daniel Friesel Date: Tue, 25 Feb 2020 21:25:53 +0100 Subject: polyline sanity check: Handle border stations and incomplete IRIS routes --- lib/Travelynx.pm | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/lib/Travelynx.pm b/lib/Travelynx.pm index 7795ed4..3e8c101 100755 --- a/lib/Travelynx.pm +++ b/lib/Travelynx.pm @@ -2077,10 +2077,19 @@ sub startup { $cache->freeze( $url, $ret ); - my $iris_stations = join( '|', $train->route ); - my $hafas_stations = join( '|', @station_list ); - - if ( $iris_stations ne $hafas_stations ) { + # borders ("(Gr)" as in "Grenze") are only returned by HAFAS. + # They are not stations. + my $iris_stations = join( '|', $train->route ); + my $hafas_stations + = join( '|', grep { $_ !~ m{\(Gr\)$} } @station_list ); + + # Do not return polyline if it belongs to an entirely different + # train. Trains with longer routes (e.g. due to train number + # changes, which are handled by HAFAS but left out in IRIS) + # are okay though. + if ( $iris_stations ne $hafas_stations + and index( $hafas_stations, $iris_stations ) == -1 ) + { $self->app->log->warn( 'Ignoring polyline for ' . $train->line . ": IRIS route does not agree with HAFAS route: $iris_stations != $hafas_stations" -- cgit v1.2.3