diff options
author | Daniel Friesel <derf@finalrewind.org> | 2014-01-03 20:33:49 +0100 |
---|---|---|
committer | Daniel Friesel <derf@finalrewind.org> | 2014-01-03 20:33:49 +0100 |
commit | cc9c1b064ce695085f1d66423ed0d4b91a210f98 (patch) | |
tree | 1e7fee79fba5d169c09d6bf1082d29a0785f2df0 /lib/Travel/Status/DE | |
parent | a113484ff392bffb8a8c7faf726862bcbdbb69d5 (diff) |
support trains with incomplete route data
Diffstat (limited to 'lib/Travel/Status/DE')
-rw-r--r-- | lib/Travel/Status/DE/IRIS.pm | 6 | ||||
-rw-r--r-- | lib/Travel/Status/DE/IRIS/Result.pm | 16 |
2 files changed, 18 insertions, 4 deletions
diff --git a/lib/Travel/Status/DE/IRIS.pm b/lib/Travel/Status/DE/IRIS.pm index 7b326d2..56b438c 100644 --- a/lib/Travel/Status/DE/IRIS.pm +++ b/lib/Travel/Status/DE/IRIS.pm @@ -107,6 +107,7 @@ sub get_timetable { $data{arrival_ts} = $e_ar->getAttribute('pt'); $data{platform} = $e_ar->getAttribute('pp'); # string, not number! $data{route_pre} = $e_ar->getAttribute('ppth'); + $data{route_start} = $e_ar->getAttribute('pde'); $data{arrival_wings} = $e_ar->getAttribute('wings'); } @@ -114,6 +115,7 @@ sub get_timetable { $data{departure_ts} = $e_dp->getAttribute('pt'); $data{platform} = $e_dp->getAttribute('pp'); # string, not number! $data{route_post} = $e_dp->getAttribute('ppth'); + $data{route_end} = $e_dp->getAttribute('pde'); $data{departure_wings} = $e_dp->getAttribute('wings'); } @@ -190,13 +192,15 @@ sub get_realtime { arrival_ts => $e_ar->getAttribute('ct'), platform => $e_ar->getAttribute('cp'), route_pre => $e_ar->getAttribute('cpth'), + status => $e_ar->getAttribute('cs'), ); } if ($e_dp) { $result->add_dp( departure_ts => $e_dp->getAttribute('ct'), platform => $e_dp->getAttribute('cp'), - route_pre => $e_dp->getAttribute('cpth'), + route_post => $e_dp->getAttribute('cpth'), + status => $e_dp->getAttribute('cs'), ); } diff --git a/lib/Travel/Status/DE/IRIS/Result.pm b/lib/Travel/Status/DE/IRIS/Result.pm index 2a43ac5..d0fe738 100644 --- a/lib/Travel/Status/DE/IRIS/Result.pm +++ b/lib/Travel/Status/DE/IRIS/Result.pm @@ -118,9 +118,18 @@ sub new { $ref->{route_post} = $ref->{sched_route_post} = [ split( qr{\|}, $ref->{route_post} // q{} ) ]; - $ref->{route_end} = $ref->{sched_route_end} = $ref->{route_post}[-1] + $ref->{route_pre_incomplete} = $ref->{route_end} ? 1 : 0; + $ref->{route_post_incomplete} = $ref->{route_post} ? 1 : 0; + + $ref->{route_end} + = $ref->{sched_route_end} + = $ref->{route_end} + || $ref->{route_post}[-1] || $ref->{station}; - $ref->{route_start} = $ref->{sched_route_start} = $ref->{route_pre}[0] + $ref->{route_start} + = $ref->{sched_route_start} + = $ref->{route_start} + || $ref->{route_pre}[0] || $ref->{station}; return bless( $ref, $obj ); @@ -244,7 +253,8 @@ sub route_interesting { push( @via_main, $stop ); } } - $last_stop = pop(@via); + $last_stop + = $self->{route_post_incomplete} ? $self->{route_end} : pop(@via); if ( @via_main and $via_main[-1] eq $last_stop ) { pop(@via_main); |