diff options
author | Daniel Friesel <derf@finalrewind.org> | 2014-12-05 00:00:36 +0100 |
---|---|---|
committer | Daniel Friesel <derf@finalrewind.org> | 2014-12-05 00:00:36 +0100 |
commit | 38c853a1c1fdb168667ff6a3fd523deac0b15a2e (patch) | |
tree | adc158ecd31b8c7975e79e92b92ae572984d11c1 | |
parent | af3e174aaf9d2560fcc49ebc6f6ea5e24545fbac (diff) |
Fix a crash when a train has unscheduled additional stops starting at the selected station
-rwxr-xr-x | bin/db-iris | 1 | ||||
-rw-r--r-- | lib/Travel/Status/DE/IRIS.pm | 12 | ||||
-rw-r--r-- | lib/Travel/Status/DE/IRIS/Result.pm | 16 |
3 files changed, 23 insertions, 6 deletions
diff --git a/bin/db-iris b/bin/db-iris index 30a3c28..e30dc9b 100755 --- a/bin/db-iris +++ b/bin/db-iris @@ -8,6 +8,7 @@ no if $] >= 5.018, warnings => 'experimental::smartmatch'; our $VERSION = '0.06'; +use Carp; use DateTime; use DateTime::Format::Strptime; use Encode qw(decode); diff --git a/lib/Travel/Status/DE/IRIS.pm b/lib/Travel/Status/DE/IRIS.pm index 5a3c34e..f326195 100644 --- a/lib/Travel/Status/DE/IRIS.pm +++ b/lib/Travel/Status/DE/IRIS.pm @@ -254,6 +254,7 @@ sub get_realtime { if ($e_ar) { $result->add_ar( arrival_ts => $e_ar->getAttribute('ct'), + plan_arrivaL_ts => $e_ar->getAttribute('pt'), platform => $e_ar->getAttribute('cp'), route_pre => $e_ar->getAttribute('cpth'), sched_route_pre => $e_ar->getAttribute('ppth'), @@ -262,11 +263,12 @@ sub get_realtime { } if ($e_dp) { $result->add_dp( - departure_ts => $e_dp->getAttribute('ct'), - platform => $e_dp->getAttribute('cp'), - route_post => $e_dp->getAttribute('cpth'), - sched_route_post => $e_dp->getAttribute('ppth'), - status => $e_dp->getAttribute('cs'), + departure_ts => $e_dp->getAttribute('ct'), + plan_departure_ts => $e_dp->getAttribute('pt'), + platform => $e_dp->getAttribute('cp'), + route_post => $e_dp->getAttribute('cpth'), + sched_route_post => $e_dp->getAttribute('ppth'), + status => $e_dp->getAttribute('cs'), ); } diff --git a/lib/Travel/Status/DE/IRIS/Result.pm b/lib/Travel/Status/DE/IRIS/Result.pm index d4d994e..e1cb513 100644 --- a/lib/Travel/Status/DE/IRIS/Result.pm +++ b/lib/Travel/Status/DE/IRIS/Result.pm @@ -102,6 +102,13 @@ sub add_ar { time_zone => 'Europe/Berlin', ); + # unscheduled arrivals may not appear in the plan, but we do need to + # know their planned arrival time + if ( $attrib{plan_arrival_ts} ) { + $self->{sched_arrival} + = $strp->parse_datetime( $attrib{plan_arrival_ts} ); + } + if ( $attrib{arrival_ts} ) { $self->{arrival} = $strp->parse_datetime( $attrib{arrival_ts} ); $self->{delay} @@ -139,6 +146,13 @@ sub add_dp { time_zone => 'Europe/Berlin', ); + # unscheduled arrivals may not appear in the plan, but we do need to + # know their planned arrival time + if ( $attrib{plan_departure_ts} ) { + $self->{sched_departure} + = $strp->parse_datetime( $attrib{plan_departure_ts} ); + } + if ( $attrib{departure_ts} ) { $self->{departure} = $strp->parse_datetime( $attrib{departure_ts} ); $self->{delay} @@ -535,7 +549,7 @@ sub translate_msg { 64 => 'Weichenstörung', 55 => 'Technische Störung an einem anderen Zug', # ? 57 => 'Zusätzlicher Halt', # ? - 58 => 'Umleitung', # ? + 58 => 'Umleitung', # ? 61 => 'Türstörung', 62 => 'Behobene technische Störung am Zug', 63 => 'Technische Untersuchung am Zug', |