Commit 88a041b9 authored by Birte Kristina Friesel's avatar Birte Kristina Friesel
Browse files

add -r/--realtime option

parent 0257285b
Loading
Loading
Loading
Loading
+2 −0
Original line number Original line Diff line number Diff line
@@ -4,6 +4,8 @@ git HEAD
      arrival or departure platform
      arrival or departure platform
    * db-iris: add -V / --track-via option to display departure at start
    * db-iris: add -V / --track-via option to display departure at start
      and expected arrival at a destination station
      and expected arrival at a destination station
    * db-iris: Add -r / --realtime option to compute times using delay
      data


Travel::Status::DE::IRIS 0.01 - Fri Jan 24 2014
Travel::Status::DE::IRIS 0.01 - Fri Jan 24 2014


+42 −7
Original line number Original line Diff line number Diff line
@@ -19,6 +19,7 @@ use Travel::Status::DE::IRIS::Stations;


my ( $date, $time );
my ( $date, $time );
my $datetime = DateTime->now( time_zone => 'Europe/Berlin' );
my $datetime = DateTime->now( time_zone => 'Europe/Berlin' );
my $realtime = 0;
my ( $filter_via, $track_via, $status_via );
my ( $filter_via, $track_via, $status_via );
my ( @grep_class, @grep_type, @grep_platform );
my ( @grep_class, @grep_type, @grep_platform );
my ( %edata,      @edata_pre );
my ( %edata,      @edata_pre );
@@ -35,6 +36,7 @@ GetOptions(
	'h|help'        => sub { show_help(0) },
	'h|help'        => sub { show_help(0) },
	'o|output=s@'   => \@edata_pre,
	'o|output=s@'   => \@edata_pre,
	'p|platform=s@' => \@grep_platform,
	'p|platform=s@' => \@grep_platform,
	'r|realtime'    => \$realtime,
	't|time=s'      => \$time,
	't|time=s'      => \$time,
	'T|type=s'      => \@grep_type,
	'T|type=s'      => \@grep_type,
	'v|via=s'       => \$filter_via,
	'v|via=s'       => \$filter_via,
@@ -101,6 +103,28 @@ if ($track_via) {
	);
	);
}
}


sub get_arrival {
	my ( $result, $fmt ) = @_;

	my $dt_arrival = $realtime ? $result->arrival : $result->sched_arrival;

	if ($fmt) {
		return $dt_arrival ? $dt_arrival->strftime($fmt) : q{};
	}
	return $dt_arrival;
}

sub get_departure {
	my ( $result, $fmt ) = @_;

	my $dt_dep = $realtime ? $result->departure : $result->sched_departure;

	if ($fmt) {
		return $dt_dep ? $dt_dep->strftime($fmt) : q{};
	}
	return $dt_dep;
}

sub get_station {
sub get_station {
	my ($input_name) = @_;
	my ($input_name) = @_;


@@ -144,6 +168,11 @@ sub sanitize_options {
		say STDERR "Disabling option --output=times";
		say STDERR "Disabling option --output=times";
		delete $edata{times};
		delete $edata{times};
	}
	}
	if ( $realtime and $edata{times} ) {
		say STDERR "Note: --realtime cannot be combined with --output=times";
		say STDERR "Disabling option --realtime";
		$realtime = 0;
	}
}
}


sub display_result {
sub display_result {
@@ -195,9 +224,8 @@ sub display_result {
			else {
			else {
				printf(
				printf(
					"%5s → %5s  %+d\n",
					"%5s → %5s  %+d\n",
					$d->arrival   ? $d->arrival->strftime('%H:%M')   : q{},
					get_arrival( $d, '%H:%M' ),
					$d->departure ? $d->departure->strftime('%H:%M') : q{},
					get_departure( $d, '%H:%M' ), $d->delay,
					$d->delay,
				);
				);
			}
			}


@@ -261,7 +289,7 @@ for my $d ( $status->results() ) {
	my $platformstr = $d->platform // q{};
	my $platformstr = $d->platform // q{};
	my $timestr;
	my $timestr;
	if ($track_via) {
	if ($track_via) {
		$timestr = $d->time;
		$timestr = get_departure( $d, '%H:%M' ) || get_arrival( $d, '%H:%M' );
		if ( not $d->departure ) {
		if ( not $d->departure ) {
			next;
			next;
		}
		}
@@ -272,8 +300,8 @@ for my $d ( $status->results() ) {
		{
		{
			next;
			next;
		}
		}
		my $timestr_via = $d_via->sched_arrival->strftime('%H:%M') . $delay;
		my $timestr_via = get_arrival( $d_via, '%H:%M' ) . $delay;
		$timestr = $d->time . '' . $timestr_via;
		$timestr .= '' . $timestr_via;
		$platformstr = sprintf( '%2s → %2s', $d->platform // q{},
		$platformstr = sprintf( '%2s → %2s', $d->platform // q{},
			$d_via->platform // q{} );
			$d_via->platform // q{} );
	}
	}
@@ -284,7 +312,9 @@ for my $d ( $status->results() ) {
		);
		);
	}
	}
	else {
	else {
		$timestr = $d->time . $delay;
		$timestr
		  = ( get_departure( $d, '%H:%M' ) || get_arrival( $d, '%H:%M' ) )
		  . $delay;
	}
	}


	push(
	push(
@@ -400,6 +430,11 @@ Show both scheduled and expected arrival and departure times.
Only show arrivals/departures at I<platforms> (comma-separated list, option may
Only show arrivals/departures at I<platforms> (comma-separated list, option may
be repeated).
be repeated).


=item B<-r>, B<--realtime>

Show estimated instead of scheduled time where available. Cannot be combiled
with C<< --output=times >>.

=item B<-t>, B<--time> I<time>
=item B<-t>, B<--time> I<time>


Request results for I<time> in HH:MM oder HH:MM:SS format. Note that only
Request results for I<time> in HH:MM oder HH:MM:SS format. Note that only