Unverified Commit 7e929948 authored by Birte Kristina Friesel's avatar Birte Kristina Friesel
Browse files

Journey: Add operators accessor

parent 99ea553e
Loading
Loading
Loading
Loading
+3 −11
Original line number Diff line number Diff line
@@ -439,18 +439,10 @@ elsif ( $opt{journey} ) {
		$delay_fmt = $delay_len + 3;
	}

	if ( @prods == 1 ) {
		if ( $prev_prod->operator ) {
			printf( "Betrieb: %s\n", $prev_prod->operator );
		}
	}
	else {
		printf(
			"Betrieb: %s\n",
			join( q{, },
				uniq map { $_->operator } grep { $_->operator } @prods )
		);
	if ( $result->operators ) {
		printf( "Betrieb: %s\n", join( q{, }, $result->operators ) );
	}

	$prev_prod = 0;

	my $desc = Travel::Status::DE::HAFAS::get_service($service) // {};
+25 −2
Original line number Diff line number Diff line
@@ -8,7 +8,7 @@ use 5.014;

use parent 'Class::Accessor';
use DateTime::Format::Strptime;
use List::Util qw(any);
use List::Util qw(any uniq);
use Travel::Status::DE::HAFAS::Stop;

our $VERSION = '6.00';
@@ -270,6 +270,23 @@ sub messages {
	return;
}

sub operators {
	my ($self) = @_;

	if ( $self->{operators} ) {
		return @{ $self->{operators} };
	}

	$self->{operators} = [
		uniq map { ( $_->prod_arr // $_->prod_dep )->operator } grep {
			      ( $_->prod_arr or $_->prod_dep )
			  and ( $_->prod_arr // $_->prod_dep )->operator
		} $self->route
	];

	return @{ $self->{operators} };
}

sub polyline {
	my ($self) = @_;

@@ -549,7 +566,13 @@ detailed delay reasons (e.g. "switch damage between X and Y, expect delays").
=item $journey->operator

The operator responsible for this journey. Returns undef
if the backend does not provide an operator.
if the backend does not provide an operator. Note that the operator may
change along the journey -- in this case, the returned operator depends on
the backend and appears to be the first one in most cases.

=item $journey->operators

List of all operators observed along the journey.

=item $journey->station (station only)