diff --git a/Changelog b/Changelog index 2c64fcddde940851607f01ad45a9d6ba2e5b7edd..3c8a3445b2c0e8b5091fc2a5df45c1ea71c14d2b 100644 --- a/Changelog +++ b/Changelog @@ -1,3 +1,7 @@ +git HEAD + + * Improve error message for unparsable (or missing) route data + Travel::Routing::DE::VRR 2.04 - Tue Jan 07 2014 * efa: Handle UTF8 in place/stop input diff --git a/bin/efa b/bin/efa index 2eb862419130c7267da6f396f8adaac158816b56..287ef1813701b407b163ac7dd4bd3af1247c76f9 100755 --- a/bin/efa +++ b/bin/efa @@ -65,7 +65,7 @@ sub handle_efa_exception { exit 2; } if ( $e->isa('Travel::Routing::DE::VRR::Exception::NoData') ) { - printf STDERR ( 'Error: %s', $e->description ); + printf STDERR ( "Error: %s\n", $e->description ); exit 3; } if ( $e->isa('Travel::Routing::DE::VRR::Exception::Ambiguous') ) { @@ -432,6 +432,13 @@ This script requires perl 5.10 (or higher) with the following modules: =head1 BUGS AND LIMITATIONS +The EFA backend is not able to calculate "two-way" routes, i.e. from -> via -> +to routes with from == to. If from and to are the same stop, it doesn't even +try to calculate a route ("we recommend walking instead"), if they are close to +each other it may or may not work. Workaround: Request from -> via using the +normal four-argument efa invocation, read the time, use efa -t time via via to +to to request via -> to. + None known. =head1 AUTHOR diff --git a/lib/Travel/Routing/DE/VRR.pm b/lib/Travel/Routing/DE/VRR.pm index 665d5bcf5b9008f6d5b8cf387077255e9aa3318c..c7193e115744ab56fea75513cb66994ad7002527 100644 --- a/lib/Travel/Routing/DE/VRR.pm +++ b/lib/Travel/Routing/DE/VRR.pm @@ -26,7 +26,7 @@ use Exception::Class ( }, 'Travel::Routing::DE::VRR::Exception::NoData' => { isa => 'Travel::Routing::DE::VRR::Exception', - description => 'got no data to parse', + description => 'backend returned no parsable route', }, 'Travel::Routing::DE::VRR::Exception::Ambiguous' => { isa => 'Travel::Routing::DE::VRR::Exception', @@ -590,7 +590,7 @@ sub parse { $self->parse_part($part); } - if ( @{ $self->{routes} } == 0 ) { + if ( not defined $self->{routes} or @{ $self->{routes} } == 0 ) { Travel::Routing::DE::VRR::Exception::NoData->throw(); }