Loading lib/Travel/Status/DE/DBWagenreihung.pm +17 −37 Original line number Original line Diff line number Diff line Loading @@ -199,6 +199,8 @@ sub parse_wagonorder { $self->{train_no} = $self->{data}{istformation}{zugnummer}; $self->{train_no} = $self->{data}{istformation}{zugnummer}; $self->parse_wagons; $self->parse_wagons; $self->{origins} = $self->parse_wings('startbetriebsstellename'); $self->{destinations} = $self->parse_wings('zielbetriebsstellename'); } } sub errstr { sub errstr { Loading Loading @@ -247,59 +249,37 @@ sub has_bad_wagons { return $self->{has_bad_wagons} = 0; return $self->{has_bad_wagons} = 0; } } sub origins { sub parse_wings { my ($self) = @_; my ( $self, $attr ) = @_; if ( exists $self->{origins} ) { my @names; return @{ $self->{origins} }; } my @origins; my %section; my %section; for my $group ( @{ $self->{data}{istformation}{allFahrzeuggruppe} } ) { for my $group ( @{ $self->{data}{istformation}{allFahrzeuggruppe} } ) { my $origin = $group->{startbetriebsstellename}; my $name = $group->{$attr}; my @sections = map { $_->{fahrzeugsektor} } @{ $group->{allFahrzeug} }; my @sections = map { $_->{fahrzeugsektor} } @{ $group->{allFahrzeug} }; push( @{ $section{$origin} }, @sections ); push( @{ $section{$name} }, @sections ); push( @origins, $origin ); push( @names, $name ); } } @origins = uniq @origins; @names = uniq @names; @origins = map { { name => $_, sections => [ uniq @{ $section{$_} } ] } } @origins; $self->{origins} = \@origins; @names = map { { name => $_, sections => [ uniq @{ $section{$_} } ] } } @names; return @origins; return \@names; } } sub destinations { sub destinations { my ($self) = @_; my ($self) = @_; if ( exists $self->{destinations} ) { return @{ $self->{destinations} // [] }; return @{ $self->{destinations} }; } } my @destinations; my %section; for my $group ( @{ $self->{data}{istformation}{allFahrzeuggruppe} } ) { my $destination = $group->{zielbetriebsstellename}; my @sections = map { $_->{fahrzeugsektor} } @{ $group->{allFahrzeug} }; push( @{ $section{$destination} }, @sections ); push( @destinations, $destination ); } @destinations = uniq @destinations; @destinations = map { { name => $_, sections => [ uniq @{ $section{$_} } ] } } @destinations; $self->{destinations} = \@destinations; sub origins { my ($self) = @_; return @destinations; return @{ $self->{origins} // [] }; } } sub sections { sub sections { Loading Loading
lib/Travel/Status/DE/DBWagenreihung.pm +17 −37 Original line number Original line Diff line number Diff line Loading @@ -199,6 +199,8 @@ sub parse_wagonorder { $self->{train_no} = $self->{data}{istformation}{zugnummer}; $self->{train_no} = $self->{data}{istformation}{zugnummer}; $self->parse_wagons; $self->parse_wagons; $self->{origins} = $self->parse_wings('startbetriebsstellename'); $self->{destinations} = $self->parse_wings('zielbetriebsstellename'); } } sub errstr { sub errstr { Loading Loading @@ -247,59 +249,37 @@ sub has_bad_wagons { return $self->{has_bad_wagons} = 0; return $self->{has_bad_wagons} = 0; } } sub origins { sub parse_wings { my ($self) = @_; my ( $self, $attr ) = @_; if ( exists $self->{origins} ) { my @names; return @{ $self->{origins} }; } my @origins; my %section; my %section; for my $group ( @{ $self->{data}{istformation}{allFahrzeuggruppe} } ) { for my $group ( @{ $self->{data}{istformation}{allFahrzeuggruppe} } ) { my $origin = $group->{startbetriebsstellename}; my $name = $group->{$attr}; my @sections = map { $_->{fahrzeugsektor} } @{ $group->{allFahrzeug} }; my @sections = map { $_->{fahrzeugsektor} } @{ $group->{allFahrzeug} }; push( @{ $section{$origin} }, @sections ); push( @{ $section{$name} }, @sections ); push( @origins, $origin ); push( @names, $name ); } } @origins = uniq @origins; @names = uniq @names; @origins = map { { name => $_, sections => [ uniq @{ $section{$_} } ] } } @origins; $self->{origins} = \@origins; @names = map { { name => $_, sections => [ uniq @{ $section{$_} } ] } } @names; return @origins; return \@names; } } sub destinations { sub destinations { my ($self) = @_; my ($self) = @_; if ( exists $self->{destinations} ) { return @{ $self->{destinations} // [] }; return @{ $self->{destinations} }; } } my @destinations; my %section; for my $group ( @{ $self->{data}{istformation}{allFahrzeuggruppe} } ) { my $destination = $group->{zielbetriebsstellename}; my @sections = map { $_->{fahrzeugsektor} } @{ $group->{allFahrzeug} }; push( @{ $section{$destination} }, @sections ); push( @destinations, $destination ); } @destinations = uniq @destinations; @destinations = map { { name => $_, sections => [ uniq @{ $section{$_} } ] } } @destinations; $self->{destinations} = \@destinations; sub origins { my ($self) = @_; return @destinations; return @{ $self->{origins} // [] }; } } sub sections { sub sections { Loading