summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBirte Kristina Friesel <birte.friesel@uos.de>2023-11-21 17:59:40 +0100
committerBirte Kristina Friesel <birte.friesel@uos.de>2023-11-21 17:59:40 +0100
commit98ddd776a6ab59756fbb07a1f48c7b2431d5c0fe (patch)
treea88190c3caff639181c6b5a0793681e9c17f996f
parent05c60f407f72cc339f55dade0aa67a87792f58d6 (diff)
trip search: show journey details if the query is unique
-rwxr-xr-xbin/hafas-m58
1 files changed, 34 insertions, 24 deletions
diff --git a/bin/hafas-m b/bin/hafas-m
index 6484387..ac076f6 100755
--- a/bin/hafas-m
+++ b/bin/hafas-m
@@ -288,6 +288,37 @@ if ($json_output) {
exit 0;
}
+if ( $opt{journeyMatch} ) {
+ if ( scalar $status->results == 1 ) {
+ my ($journey) = $status->results;
+ $opt{journey} = { id => $journey->id };
+ delete $opt{journeyMatch};
+ $status = Travel::Status::DE::HAFAS->new(%opt);
+ }
+ else {
+ for my $result ( $status->results ) {
+ my $start = ( $result->route )[0];
+ my $end = ( $result->route )[-1];
+ say $result->id;
+ print $result->name;
+ if ( $result->number ) {
+ printf( " | Zug %s", $result->number );
+ }
+ if ( $result->line_no ) {
+ printf( " | Linie %s", $result->line_no );
+ }
+ say q{};
+ printf( "%s ab %s\n",
+ $start->dep->strftime('%H:%M'),
+ $start->loc->name );
+ printf( "%s an %s\n\n",
+ $end->arr->strftime('%H:%M'),
+ $end->loc->name );
+ }
+ exit 0;
+ }
+}
+
if ( $opt{geoSearch} ) {
for my $result ( $status->results ) {
printf(
@@ -341,28 +372,6 @@ elsif ( $opt{journey} ) {
}
exit 0;
}
-elsif ( $opt{journeyMatch} ) {
- for my $result ( $status->results ) {
- my $start = ( $result->route )[0];
- my $end = ( $result->route )[-1];
- say $result->id;
- print $result->name;
- if ( $result->number ) {
- printf( " | Zug %s", $result->number );
- }
- if ( $result->line_no ) {
- printf( " | Linie %s", $result->line_no );
- }
- say q{};
- printf( "%s ab %s\n",
- $start->dep->strftime('%H:%M'),
- $start->loc->name );
- printf( "%s an %s\n\n",
- $end->arr->strftime('%H:%M'),
- $end->loc->name );
- }
- exit 0;
-}
my $message_id = 1;
for my $m ( $status->messages ) {
@@ -471,8 +480,9 @@ I<lat>B<:>I<lon> geocoordinates with EVA ID and name.
=head2 Trip Search (B<!>I<query>)
-List journey IDs that match the train numer I<query> (e.g. "ICE 205" or
-"S 31111").
+Show trip details (see below) for the train number provided in I<query>
+(e.g. "ICE 205" or "S 31111") if it resolves into a single journey ID.
+Otherwise, list all journey IDs that match I<query>.
=head2 Trip Details (I<journeyID>)