summaryrefslogtreecommitdiff
path: root/bin/efa-m
diff options
context:
space:
mode:
Diffstat (limited to 'bin/efa-m')
-rwxr-xr-xbin/efa-m16
1 files changed, 15 insertions, 1 deletions
diff --git a/bin/efa-m b/bin/efa-m
index b4225c1..2d079cb 100755
--- a/bin/efa-m
+++ b/bin/efa-m
@@ -12,12 +12,13 @@ binmode( STDOUT, ':encoding(utf-8)' );
use Encode qw(decode);
use Getopt::Long qw(:config no_ignore_case);
-use List::Util qw(max);
+use List::Util qw(first max);
use Travel::Status::DE::EFA;
my $efa_url = 'http://efa.vrr.de/vrr/XSLT_DM_REQUEST';
my ( $date, $time, $input_type, $list_lines, $offset, $relative_times );
my ($full_routes);
+my ($filter_via);
my ( $timeout, $developer_mode );
my ( @grep_lines, @grep_platforms );
my ( %edata, @edata_pre );
@@ -36,6 +37,7 @@ GetOptions(
't|time=s' => \$time,
'timeout=i' => \$timeout,
'u|efa-url=s' => \$efa_url,
+ 'v|via=s' => \$filter_via,
'V|version' => \&show_version,
'devmode' => \$developer_mode,
@@ -63,6 +65,9 @@ for my $efield (@edata_pre) {
default { $edata{$efield} = 1 }
}
}
+if ($filter_via) {
+ $full_routes = 1;
+}
my $status = Travel::Status::DE::EFA->new(
date => $date,
@@ -198,6 +203,9 @@ sub show_results {
or ( @grep_platforms
and not( $platform ~~ \@grep_platforms ) )
or ( $offset and $d->countdown < $offset )
+ or ( $filter_via
+ and
+ not( first { $_->{stop} =~ m{$filter_via}io } $d->route_post ) )
)
{
next;
@@ -325,6 +333,12 @@ than others. See Travel::Status::DE::EFA(3pm) for alternatives.
Set timeout for HTTP requests. Default: 10 seconds. Set to 0 or a negative
value to disable it.
+=item B<-v>, B<--via> I<station>
+
+Only show trains serving I<station> after the requseted I<stop>. I<station>
+is matched against the "I<city> I<stop>" fields in each line's route.
+Regular expressions are also supported.
+
=item B<-V>, B<--version>
Show version information.