Loading bin/efa-m +5 −2 Original line number Diff line number Diff line Loading @@ -456,11 +456,14 @@ sub show_results { my @output_line; my $platform = $d->platform; my $dtime = ( my $dtime = $d->datetime ? ( $relative_times ? sprintf( '%2d min', $d->countdown ) : $d->datetime->strftime('%H:%M') ); ) : q{??:??}; if ( ( @grep_lines and none { $d->line eq $_ } @grep_lines ) Loading lib/Travel/Status/DE/EFA/Departure.pm +66 −31 Original line number Diff line number Diff line Loading @@ -34,6 +34,7 @@ sub new { my ( $sched_dt, $real_dt ); if ( my $dt = $departure->{dateTime} ) { eval { $sched_dt = DateTime->new( year => $dt->{year}, month => $dt->{month}, Loading @@ -43,9 +44,16 @@ sub new { second => $dt->{second} // 0, time_zone => 'Europe/Berlin', ); }; if ($@) { warn( "Departure $departure->{servingLine}{stateless}: Invalid departure dateTIme: $@" ); } } if ( my $dt = $departure->{realDateTime} ) { eval { $real_dt = DateTime->new( year => $dt->{year}, month => $dt->{month}, Loading @@ -55,6 +63,12 @@ sub new { second => $dt->{second} // 0, time_zone => 'Europe/Berlin', ); }; if ($@) { warn( "Departure $departure->{servingLine}{stateless}: Invalid departure dateTIme: $@" ); } } my @hints Loading Loading @@ -110,6 +124,20 @@ sub new { return $ref; } sub parse_datetime { my ( $self, $strp, $str ) = @_; my $ret; eval { $ret = $strp->parse_datetime($str); }; if ($@) { my $strp_str = $strp->pattern; warn( "Departure $self->{stateless}: Cannot parse '$str' with '$strp_str': $@" ); } return $ret; } sub parse_route { my ( $self, $stop_seq, $requested_id ) = @_; my @ret; Loading @@ -132,20 +160,27 @@ sub parse_route { my $ref = $stop->{ref}; my ( $arr, $dep ); eval { if ( $ref->{arrDateTimeSec} ) { $arr = $self->{strp_stopseq_s} ->parse_datetime( $ref->{arrDateTimeSec} ); $arr = $self->parse_datetime( $self->{strp_stopseq_s}, $ref->{arrDateTimeSec} ); } elsif ( $ref->{arrDateTime} ) { $arr = $self->{strp_stopseq}->parse_datetime( $ref->{arrDateTime} ); $arr = $self->parse_datetime( $self->{strp_stopseq}, $ref->{arrDateTime} ); } if ( $ref->{depDateTimeSec} ) { $dep = $self->{strp_stopseq_s} ->parse_datetime( $ref->{depDateTimeSec} ); $dep = $self->parse_datetime( $self->{strp_stopseq_s}, $ref->{depDateTimeSec} ); } elsif ( $ref->{depDateTime} ) { $dep = $self->{strp_stopseq}->parse_datetime( $ref->{depDateTime} ); $dep = $self->parse_datetime( $self->{strp_stopseq}, $ref->{depDateTime} ); } }; if ($@) { warn; } push( Loading lib/Travel/Status/DE/EFA/Trip.pm +7 −1 Original line number Diff line number Diff line Loading @@ -144,7 +144,13 @@ sub parse_dt { my ( $self, $value ) = @_; if ($value) { my $dt = $self->{strptime_obj}->parse_datetime($value); my $dt; eval { $dt = $self->{strptime_obj}->parse_datetime($value); }; if ($@) { my $strp_str = $self->{strptime_obj}->pattern; warn( "Trip $self->{id}: Cannot parse '$value' with '$strp_str': $@"); } if ($dt) { return $dt->set_time_zone('Europe/Berlin'); } Loading Loading
bin/efa-m +5 −2 Original line number Diff line number Diff line Loading @@ -456,11 +456,14 @@ sub show_results { my @output_line; my $platform = $d->platform; my $dtime = ( my $dtime = $d->datetime ? ( $relative_times ? sprintf( '%2d min', $d->countdown ) : $d->datetime->strftime('%H:%M') ); ) : q{??:??}; if ( ( @grep_lines and none { $d->line eq $_ } @grep_lines ) Loading
lib/Travel/Status/DE/EFA/Departure.pm +66 −31 Original line number Diff line number Diff line Loading @@ -34,6 +34,7 @@ sub new { my ( $sched_dt, $real_dt ); if ( my $dt = $departure->{dateTime} ) { eval { $sched_dt = DateTime->new( year => $dt->{year}, month => $dt->{month}, Loading @@ -43,9 +44,16 @@ sub new { second => $dt->{second} // 0, time_zone => 'Europe/Berlin', ); }; if ($@) { warn( "Departure $departure->{servingLine}{stateless}: Invalid departure dateTIme: $@" ); } } if ( my $dt = $departure->{realDateTime} ) { eval { $real_dt = DateTime->new( year => $dt->{year}, month => $dt->{month}, Loading @@ -55,6 +63,12 @@ sub new { second => $dt->{second} // 0, time_zone => 'Europe/Berlin', ); }; if ($@) { warn( "Departure $departure->{servingLine}{stateless}: Invalid departure dateTIme: $@" ); } } my @hints Loading Loading @@ -110,6 +124,20 @@ sub new { return $ref; } sub parse_datetime { my ( $self, $strp, $str ) = @_; my $ret; eval { $ret = $strp->parse_datetime($str); }; if ($@) { my $strp_str = $strp->pattern; warn( "Departure $self->{stateless}: Cannot parse '$str' with '$strp_str': $@" ); } return $ret; } sub parse_route { my ( $self, $stop_seq, $requested_id ) = @_; my @ret; Loading @@ -132,20 +160,27 @@ sub parse_route { my $ref = $stop->{ref}; my ( $arr, $dep ); eval { if ( $ref->{arrDateTimeSec} ) { $arr = $self->{strp_stopseq_s} ->parse_datetime( $ref->{arrDateTimeSec} ); $arr = $self->parse_datetime( $self->{strp_stopseq_s}, $ref->{arrDateTimeSec} ); } elsif ( $ref->{arrDateTime} ) { $arr = $self->{strp_stopseq}->parse_datetime( $ref->{arrDateTime} ); $arr = $self->parse_datetime( $self->{strp_stopseq}, $ref->{arrDateTime} ); } if ( $ref->{depDateTimeSec} ) { $dep = $self->{strp_stopseq_s} ->parse_datetime( $ref->{depDateTimeSec} ); $dep = $self->parse_datetime( $self->{strp_stopseq_s}, $ref->{depDateTimeSec} ); } elsif ( $ref->{depDateTime} ) { $dep = $self->{strp_stopseq}->parse_datetime( $ref->{depDateTime} ); $dep = $self->parse_datetime( $self->{strp_stopseq}, $ref->{depDateTime} ); } }; if ($@) { warn; } push( Loading
lib/Travel/Status/DE/EFA/Trip.pm +7 −1 Original line number Diff line number Diff line Loading @@ -144,7 +144,13 @@ sub parse_dt { my ( $self, $value ) = @_; if ($value) { my $dt = $self->{strptime_obj}->parse_datetime($value); my $dt; eval { $dt = $self->{strptime_obj}->parse_datetime($value); }; if ($@) { my $strp_str = $self->{strptime_obj}->pattern; warn( "Trip $self->{id}: Cannot parse '$value' with '$strp_str': $@"); } if ($dt) { return $dt->set_time_zone('Europe/Berlin'); } Loading