summaryrefslogtreecommitdiff
path: root/lib/Travel/Status/DE/HAFAS/Journey.pm
diff options
context:
space:
mode:
authorBirte Kristina Friesel <derf@finalrewind.org>2023-11-16 19:52:45 +0100
committerBirte Kristina Friesel <derf@finalrewind.org>2023-11-16 19:52:45 +0100
commit599ff9f5f2f86fa499d5c8895ff683ba67ff395b (patch)
tree324ffb4a69e10fa024acffe60522734bb1ffa89a /lib/Travel/Status/DE/HAFAS/Journey.pm
parent9713bec22e9aaaded6fd237f206763cc0c59cfa6 (diff)
Move HAFAS stop parser to Stop package
Diffstat (limited to 'lib/Travel/Status/DE/HAFAS/Journey.pm')
-rw-r--r--lib/Travel/Status/DE/HAFAS/Journey.pm94
1 files changed, 10 insertions, 84 deletions
diff --git a/lib/Travel/Status/DE/HAFAS/Journey.pm b/lib/Travel/Status/DE/HAFAS/Journey.pm
index 5f96c8f..37f8262 100644
--- a/lib/Travel/Status/DE/HAFAS/Journey.pm
+++ b/lib/Travel/Status/DE/HAFAS/Journey.pm
@@ -108,76 +108,20 @@ sub new {
my @stops;
my $route_end;
for my $stop ( @{ $journey->{stopL} // [] } ) {
- my $loc = $locL[ $stop->{locX} ];
- my $sched_arr = $stop->{aTimeS};
- my $rt_arr = $stop->{aTimeR};
- my $sched_dep = $stop->{dTimeS};
- my $rt_dep = $stop->{dTimeR};
-
- # dIn. / aOut. -> may passengers enter / exit the train?
-
- my $sched_platform = $stop->{aPlatfS} // $stop->{dPlatfS};
- my $rt_platform = $stop->{aPlatfR} // $stop->{dPlatfR};
- my $changed_platform = $stop->{aPlatfCh} // $stop->{dPlatfCh};
-
- for my $timestr ( $sched_arr, $rt_arr, $sched_dep, $rt_dep ) {
- if ( not defined $timestr ) {
- next;
- }
-
- $timestr = handle_day_change(
- input => $timestr,
- date => $date,
- strp_obj => $hafas->{strptime_obj},
- ref => $datetime_ref
- );
-
- }
-
- my $arr_delay
- = ( $sched_arr and $rt_arr )
- ? ( $rt_arr->epoch - $sched_arr->epoch ) / 60
- : undef;
-
- my $dep_delay
- = ( $sched_dep and $rt_dep )
- ? ( $rt_dep->epoch - $sched_dep->epoch ) / 60
- : undef;
-
- my $arr_cancelled = $stop->{aCncl};
- my $dep_cancelled = $stop->{dCncl};
-
- my $tco = {};
- for my $tco_id ( @{ $stop->{dTrnCmpSX}{tcocX} // [] } ) {
- my $tco_kv = $tcocL[$tco_id];
- $tco->{ $tco_kv->{c} } = $tco_kv->{r};
- }
+ my $loc = $locL[ $stop->{locX} ];
push(
@stops,
{
- loc => $loc,
- extra => {
- sched_arr => $sched_arr,
- rt_arr => $rt_arr,
- arr => $rt_arr // $sched_arr,
- arr_delay => $arr_delay,
- arr_cancelled => $arr_cancelled,
- sched_dep => $sched_dep,
- rt_dep => $rt_dep,
- dep => $rt_dep // $sched_dep,
- dep_delay => $dep_delay,
- dep_cancelled => $dep_cancelled,
- delay => $dep_delay // $arr_delay,
- direction => $stop->{dDirTxt},
- sched_platform => $sched_platform,
- rt_platform => $rt_platform,
- is_changed_platform => $changed_platform,
- platform => $rt_platform // $sched_platform,
- load => $tco,
- }
+ loc => $loc,
+ stop => $stop,
+ common => $opt{common},
+ date => $date,
+ datetime_ref => $datetime_ref,
+ strp_obj => $hafas->{strptime_obj},
}
);
+
$route_end = $loc->{name};
}
@@ -242,7 +186,7 @@ sub new {
next;
}
- $timestr = handle_day_change(
+ $timestr = Travel::Status::DE::HAFAS::Stop::handle_day_change(
input => $timestr,
date => $date,
strp_obj => $hafas->{strptime_obj},
@@ -289,24 +233,6 @@ sub new {
# }}}
-sub handle_day_change {
- my (%opt) = @_;
- my $date = $opt{date};
- my $timestr = $opt{input};
- if ( length($timestr) == 8 ) {
-
- # arrival time includes a day offset
- my $offset_date = $opt{ref}->clone;
- $offset_date->add( days => substr( $timestr, 0, 2, q{} ) );
- $offset_date = $offset_date->strftime('%Y%m%d');
- $timestr = $opt{strp_obj}->parse_datetime("${offset_date}T${timestr}");
- }
- else {
- $timestr = $opt{strp_obj}->parse_datetime("${date}T${timestr}");
- }
- return $timestr;
-}
-
# {{{ Accessors
# Legacy
@@ -353,7 +279,7 @@ sub route {
my ($self) = @_;
if ( $self->{route} ) {
- if ( $self->{route}[0] and $self->{route}[0]{extra} ) {
+ if ( $self->{route}[0] and $self->{route}[0]{stop} ) {
$self->{route}
= [ map { Travel::Status::DE::HAFAS::Stop->new( %{$_} ) }
@{ $self->{route} } ];