summaryrefslogtreecommitdiff
path: root/lib/Travel
diff options
context:
space:
mode:
authorDaniel Friesel <derf@finalrewind.org>2014-01-03 20:33:49 +0100
committerDaniel Friesel <derf@finalrewind.org>2014-01-03 20:33:49 +0100
commitcc9c1b064ce695085f1d66423ed0d4b91a210f98 (patch)
tree1e7fee79fba5d169c09d6bf1082d29a0785f2df0 /lib/Travel
parenta113484ff392bffb8a8c7faf726862bcbdbb69d5 (diff)
support trains with incomplete route data
Diffstat (limited to 'lib/Travel')
-rw-r--r--lib/Travel/Status/DE/IRIS.pm6
-rw-r--r--lib/Travel/Status/DE/IRIS/Result.pm16
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);