From c6b1f38efbc1029ee54ea396c300a2e62f6607c1 Mon Sep 17 00:00:00 2001 From: Daniel Friesel Date: Sat, 28 Jan 2017 18:50:54 +0100 Subject: Support ->lookbehind for delayed trains from previous hours --- Changelog | 4 ++++ lib/Travel/Status/DE/IRIS.pm | 15 +++++++++++---- t/20-iris-class.t | 3 ++- t/31-result-basics.t | 3 ++- 4 files changed, 19 insertions(+), 6 deletions(-) diff --git a/Changelog b/Changelog index 1ef3aba..0582395 100644 --- a/Changelog +++ b/Changelog @@ -1,3 +1,7 @@ +git HEAD + + * IRIS->new: Add optional argument lookbehind + Travel::Status::DE::IRIS 1.13 - Thu Jan 26 2017 * Fix support for line numbers, remove manual line map workaround diff --git a/lib/Travel/Status/DE/IRIS.pm b/lib/Travel/Status/DE/IRIS.pm index 5bb0b89..bbb84c7 100644 --- a/lib/Travel/Status/DE/IRIS.pm +++ b/lib/Travel/Status/DE/IRIS.pm @@ -35,9 +35,10 @@ sub new { developer_mode => $opt{developer_mode}, iris_base => $opt{iris_base} // 'http://iris.noncd.db.de/iris-tts/timetable', - lookahead => $opt{lookahead} // ( 4 * 60 ), - main_cache => $opt{main_cache}, - rt_cache => $opt{realtime_cache}, + lookahead => $opt{lookahead} // ( 4 * 60 ), + lookbehind => $opt{lookbehind} // ( 0 * 60 ), + main_cache => $opt{main_cache}, + rt_cache => $opt{realtime_cache}, serializable => $opt{serializable}, user_agent => $ua, with_related => $opt{with_related}, @@ -67,6 +68,7 @@ sub new { datetime => $self->{datetime}, developer_mode => $self->{developer_mode}, lookahead => $self->{lookahead}, + lookbehind => $self->{lookbehind}, station => $ref->{uic}, main_cache => $self->{main_cache}, realtime_cache => $self->{rt_cache}, @@ -82,10 +84,15 @@ sub new { } my $dt_req = $self->{datetime}->clone; - for ( 1 .. 3 ) { + for ( 1 .. int( $self->{lookahead} / 60 ) ) { $self->get_timetable( $self->{station}{uic}, $dt_req ); $dt_req->add( hours => 1 ); } + $dt_req = $self->{datetime}->clone; + for ( 1 .. int( $self->{lookbehind} / 60 ) ) { + $dt_req->subtract( hours => 1 ); + $self->get_timetable( $self->{station}{uic}, $dt_req ); + } $self->get_realtime; diff --git a/t/20-iris-class.t b/t/20-iris-class.t index ba3882b..8ec50ef 100644 --- a/t/20-iris-class.t +++ b/t/20-iris-class.t @@ -21,7 +21,8 @@ my $status = Travel::Status::DE::IRIS->new( hour => 20, minute => 1, time_zone => 'Europe/Berlin', - ) + ), + lookahead => 3 * 60 + 59, ); isa_ok( $status, 'Travel::Status::DE::IRIS' ); diff --git a/t/31-result-basics.t b/t/31-result-basics.t index f88fa6f..ac2b23d 100644 --- a/t/31-result-basics.t +++ b/t/31-result-basics.t @@ -20,7 +20,8 @@ my $status = Travel::Status::DE::IRIS->new( hour => 20, minute => 1, time_zone => 'Europe/Berlin' - ) + ), + lookahead => 3 * 60 + 59, ); my @results = $status->results; -- cgit v1.2.3