diff options
author | Birte Kristina Friesel <derf@finalrewind.org> | 2025-06-08 08:29:34 +0200 |
---|---|---|
committer | Birte Kristina Friesel <derf@finalrewind.org> | 2025-06-08 08:29:34 +0200 |
commit | 21174bc9e0367018f28c0b5fc98d0e0fca317160 (patch) | |
tree | 7eae01acd4541162b117225bf7bda6d759380acf /lib/Travel | |
parent | d97790563dc97c130433cd12479cb2698c6f0201 (diff) |
place_candidates, name_candidates: return Stop objects
Fixes https://github.com/derf/db-fakedisplay/issues/38 once adopted there
Diffstat (limited to 'lib/Travel')
-rw-r--r-- | lib/Travel/Status/DE/EFA.pm | 34 |
1 files changed, 28 insertions, 6 deletions
diff --git a/lib/Travel/Status/DE/EFA.pm b/lib/Travel/Status/DE/EFA.pm index d1b14d8..29dbf5b 100644 --- a/lib/Travel/Status/DE/EFA.pm +++ b/lib/Travel/Status/DE/EFA.pm @@ -412,15 +412,37 @@ 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->{errstr} = "ambiguous name parameter"; + $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->{errstr} = "ambiguous name parameter"; + $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; } } |