Unverified Commit 45ac5062 authored by Birte Kristina Friesel's avatar Birte Kristina Friesel
Browse files

hafas-m --via: show estimated arrival time

parent a007ccc7
Loading
Loading
Loading
Loading
+32 −21
Original line number Diff line number Diff line
@@ -11,7 +11,7 @@ use Encode qw(decode);
use JSON;
use Getopt::Long    qw(:config no_ignore_case);
use List::MoreUtils qw(uniq);
use List::Util      qw(any first max);
use List::Util      qw(first max);
use Travel::Status::DE::HAFAS;

my ( $date, $time, $language );
@@ -205,15 +205,15 @@ sub journey_has_via {

	if ( $via =~ m{ ^ [0-9,]+ $ }x ) {
		for my $eva ( split( qr{,}, $via ) ) {
			if ( any { $_->loc->eva == $eva } $journey->route ) {
				return 1;
			if ( my $stop = first { $_->loc->eva == $eva } $journey->route ) {
				return $stop;
			}
		}
		return;
	}

	if ( any { $_->loc->name =~ m{$via}io } $journey->route ) {
		return 1;
	if ( my $stop = first { $_->loc->name =~ m{$via}io } $journey->route ) {
		return $stop;
	}
	return;
}
@@ -493,9 +493,7 @@ for my $d (@results) {
		  . $info_line;
	}

	push(
		@output,
		[
	my $entry = [
		$d->is_cancelled ? '--:--' : $d->datetime->strftime('%H:%M'),
		$d->is_cancelled
		? q{}
@@ -505,10 +503,23 @@ for my $d (@results) {
		( $d->platform // q{} ) . ( $d->is_changed_platform ? ' !' : q{} ),
		$info_line,
		$d
		]
	];

	if ($via) {
		my $stop = journey_has_via( $d, $via );

		# HAFAS does not provide real-time data for route entries, so we have to guesstimate the arrival time
		$entry->[0] .= ''
		  . (
			$stop->arr_cancelled
			? '--:--'
			: $stop->arr->add( minutes => $d->delay // 0 )->strftime('%H:%M')
		  );
	}

	push( @output, $entry, );
}

display_result(@output);

for my $m ( $status->messages ) {