summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBirte Kristina Friesel <derf@finalrewind.org>2024-04-27 10:49:48 +0200
committerBirte Kristina Friesel <derf@finalrewind.org>2024-04-27 10:49:48 +0200
commit80139a3a3166ee8cd8bfbed4f67e1bdca03cfa81 (patch)
tree3cd1464d6832a0d539389c80c9c464df2fa0f924
parent5859764fbf3b2bb63edc1d4cbb1a501441ea33f3 (diff)
Make origins return a list of hashrefs, just like destinations
-rwxr-xr-xbin/db-wagenreihung7
-rw-r--r--lib/Travel/Status/DE/DBWagenreihung.pm31
2 files changed, 26 insertions, 12 deletions
diff --git a/bin/db-wagenreihung b/bin/db-wagenreihung
index 87b5223..291cc9f 100755
--- a/bin/db-wagenreihung
+++ b/bin/db-wagenreihung
@@ -73,7 +73,12 @@ my $wr = Travel::Status::DE::DBWagenreihung->new(
printf(
"%s: %s → %s\n",
join( ' / ', map { $wr->train_type . ' ' . $_ } $wr->train_numbers ),
- join( ' / ', $wr->origins ),
+ join(
+ ' / ',
+ map {
+ sprintf( '%s (%s)', $_->{name}, join( q{}, @{ $_->{sections} } ) )
+ } $wr->origins
+ ),
join(
' / ',
map {
diff --git a/lib/Travel/Status/DE/DBWagenreihung.pm b/lib/Travel/Status/DE/DBWagenreihung.pm
index 5f7f0ba..dceaf2f 100644
--- a/lib/Travel/Status/DE/DBWagenreihung.pm
+++ b/lib/Travel/Status/DE/DBWagenreihung.pm
@@ -255,13 +255,20 @@ sub origins {
}
my @origins;
+ my %section;
for my $group ( @{ $self->{data}{istformation}{allFahrzeuggruppe} } ) {
- push( @origins, $group->{startbetriebsstellename} );
+ my $origin = $group->{startbetriebsstellename};
+ my @sections = map { $_->{fahrzeugsektor} } @{ $group->{allFahrzeug} };
+ push( @{ $section{$origin} }, @sections );
+ push( @origins, $origin );
}
@origins = uniq @origins;
+ @origins
+ = map { { name => $_, sections => [ uniq @{ $section{$_} } ] } } @origins;
+
$self->{origins} = \@origins;
return @origins;
@@ -805,13 +812,13 @@ Train number. Do not include the train type: Use "8" for "EC 8" or
=item $wr->destinations
-Returns a list describing all final destinations of this train. In most
-cases, it contains one element, however, for trains consisting of multiple
-wings, it contains one element for each wing.
+Returns a list describing the destinations of this train's wagons. In most
+cases, it contains one element. For trains consisting of multiple wings or
+trains that switch locomotives along the way, it contains one element for each
+wing or other kind of wagon group.
-Each destination is a hash ref containing the destination B<name> and the
-corresponding platform I<sections> (at the moment, this is a list of section
-identifiers).
+Each destination is a hash ref containing its B<name> and the corresponding
+platform I<sections> (at the moment, this is a list of section identifiers).
This function is subject to change.
@@ -828,11 +835,13 @@ Returns undef otherwise.
=item $wr->origins
-Returns a list of stations this train originates from. In most cases, this is
-just one element; however, for trains consisting of multiple wings, it gives
-the origin of each wing unless they are identical.
+Returns a list describing the origins of this train's wagons. In most
+cases, it contains one element. For trains consisting of multiple wings or
+trains that switch locomotives along the way, it contains one element for each
+wing or other kind of wagon group.
-Each origin is a station name.
+Each origin is a hash ref containing its B<name> and the corresponding
+platform I<sections> (at the moment, this is a list of section identifiers).
This function is subject to change.