Loading Changelog +6 −0 Original line number Diff line number Diff line git HEAD * Breaking change: $efa->name_candidates and $efa->place_candidates now return lists of Travel::Status::DE::EFA::Stop objects rather than just strings. Travel::Status::DE::VRR 3.09 - Sun Mar 23 2025 * Trip: Add polyline accessor Loading bin/efa-m +6 −2 Original line number Diff line number Diff line Loading @@ -555,11 +555,15 @@ if ( my $err = $efa->errstr ) { if ( $efa->place_candidates ) { say 'You might want to try one of the following places:'; say join( "\n", $efa->place_candidates ); for my $candidate ( $efa->place_candidates ) { printf( "%d %s\n", $candidate->id_num, $candidate->name ); } } elsif ( $efa->name_candidates ) { say 'You might want to try one of the following names:'; say join( "\n", $efa->name_candidates ); for my $candidate ( $efa->name_candidates ) { printf( "%d %s\n", $candidate->id_num, $candidate->name ); } } exit 2; Loading lib/Travel/Status/DE/EFA.pm +28 −6 Original line number Diff line number Diff line Loading @@ -413,14 +413,36 @@ sub check_for_ambiguous { for my $m ( @{ $json->{dm}{message} // [] } ) { if ( $m->{name} eq 'error' and $m->{value} eq 'name list' ) { $self->{errstr} = "ambiguous name parameter"; $self->{name_candidates} = [ map { $_->{name} } @{ $json->{dm}{points} // [] } ]; $self->{name_candidates} = []; for my $point ( @{ $json->{dm}{points} // [] } ) { my $place = $point->{ref}{place}; push( @{ $self->{name_candidates} }, Travel::Status::DE::EFA::Stop->new( place => $place, full_name => $point->{name}, name => $point->{name} =~ s{\Q$place\E,? ?}{}r, id_num => $point->{ref}{id}, ) ); } return; } if ( $m->{name} eq 'error' and $m->{value} eq 'place list' ) { $self->{errstr} = "ambiguous name parameter"; $self->{place_candidates} = [ map { $_->{name} } @{ $json->{dm}{points} // [] } ]; $self->{place_candidates} = []; for my $point ( @{ $json->{dm}{points} // [] } ) { my $place = $point->{ref}{place}; push( @{ $self->{place_candidates} }, Travel::Status::DE::EFA::Stop->new( place => $place, full_name => $point->{name}, name => $point->{name} =~ s{\Q$place\E,? ?}{}r, id_num => $point->{ref}{id}, ) ); } return; } } Loading t/21-vrr-ambig.t +4 −4 Original line number Diff line number Diff line Loading @@ -27,11 +27,11 @@ is( $status->errstr, 'ambiguous name parameter', 'errstr ok' ); is_deeply( [ $status->place_candidates ], [], 'place candidates ok' ); is_deeply( [ $status->name_candidates ], [ map { $_->id_num . ' ' . $_->full_name } $status->name_candidates ], [ 'Essen, Alfred-Krupp-Schule', 'Essen, Alfredbrücke', 'Essen, Alfredusbad' '20009114 Essen, Alfred-Krupp-Schule', '20009113 Essen, Alfredbrücke', '20009115 Essen, Alfredusbad', ], 'name candidates ok' ); Loading Loading
Changelog +6 −0 Original line number Diff line number Diff line git HEAD * Breaking change: $efa->name_candidates and $efa->place_candidates now return lists of Travel::Status::DE::EFA::Stop objects rather than just strings. Travel::Status::DE::VRR 3.09 - Sun Mar 23 2025 * Trip: Add polyline accessor Loading
bin/efa-m +6 −2 Original line number Diff line number Diff line Loading @@ -555,11 +555,15 @@ if ( my $err = $efa->errstr ) { if ( $efa->place_candidates ) { say 'You might want to try one of the following places:'; say join( "\n", $efa->place_candidates ); for my $candidate ( $efa->place_candidates ) { printf( "%d %s\n", $candidate->id_num, $candidate->name ); } } elsif ( $efa->name_candidates ) { say 'You might want to try one of the following names:'; say join( "\n", $efa->name_candidates ); for my $candidate ( $efa->name_candidates ) { printf( "%d %s\n", $candidate->id_num, $candidate->name ); } } exit 2; Loading
lib/Travel/Status/DE/EFA.pm +28 −6 Original line number Diff line number Diff line Loading @@ -413,14 +413,36 @@ sub check_for_ambiguous { for my $m ( @{ $json->{dm}{message} // [] } ) { if ( $m->{name} eq 'error' and $m->{value} eq 'name list' ) { $self->{errstr} = "ambiguous name parameter"; $self->{name_candidates} = [ map { $_->{name} } @{ $json->{dm}{points} // [] } ]; $self->{name_candidates} = []; for my $point ( @{ $json->{dm}{points} // [] } ) { my $place = $point->{ref}{place}; push( @{ $self->{name_candidates} }, Travel::Status::DE::EFA::Stop->new( place => $place, full_name => $point->{name}, name => $point->{name} =~ s{\Q$place\E,? ?}{}r, id_num => $point->{ref}{id}, ) ); } return; } if ( $m->{name} eq 'error' and $m->{value} eq 'place list' ) { $self->{errstr} = "ambiguous name parameter"; $self->{place_candidates} = [ map { $_->{name} } @{ $json->{dm}{points} // [] } ]; $self->{place_candidates} = []; for my $point ( @{ $json->{dm}{points} // [] } ) { my $place = $point->{ref}{place}; push( @{ $self->{place_candidates} }, Travel::Status::DE::EFA::Stop->new( place => $place, full_name => $point->{name}, name => $point->{name} =~ s{\Q$place\E,? ?}{}r, id_num => $point->{ref}{id}, ) ); } return; } } Loading
t/21-vrr-ambig.t +4 −4 Original line number Diff line number Diff line Loading @@ -27,11 +27,11 @@ is( $status->errstr, 'ambiguous name parameter', 'errstr ok' ); is_deeply( [ $status->place_candidates ], [], 'place candidates ok' ); is_deeply( [ $status->name_candidates ], [ map { $_->id_num . ' ' . $_->full_name } $status->name_candidates ], [ 'Essen, Alfred-Krupp-Schule', 'Essen, Alfredbrücke', 'Essen, Alfredusbad' '20009114 Essen, Alfred-Krupp-Schule', '20009113 Essen, Alfredbrücke', '20009115 Essen, Alfredusbad', ], 'name candidates ok' ); Loading