diff options
author | Daniel Friesel <derf@finalrewind.org> | 2011-09-02 19:23:56 +0200 |
---|---|---|
committer | Daniel Friesel <derf@finalrewind.org> | 2011-09-02 19:23:56 +0200 |
commit | ca37cdd0009298b677ffbc356741098d609c474d (patch) | |
tree | 78b5f08a5947232e4e76e55c128d3ec6a295d403 | |
parent | 40a308971dd32d9b7468ae3c2ef313e636f888e9 (diff) |
DeutscheBahn/Result.pm: Add route_timetable accessor
-rw-r--r-- | Changelog | 6 | ||||
-rw-r--r-- | lib/Travel/Status/DE/DeutscheBahn.pm | 9 | ||||
-rw-r--r-- | lib/Travel/Status/DE/DeutscheBahn/Result.pm | 14 | ||||
-rw-r--r-- | t/20-db.t | 18 |
4 files changed, 40 insertions, 7 deletions
@@ -1,3 +1,9 @@ +git HEAD + + * Fix bug when receiving no platform numbers from the DB RIS + * Result: Add route_timetable accessor containing station names and + their corresponding arrival times + Travel::Status::DE::DeutscheBahn 0.05 - Tue Aug 09 2011 [Travel::Status::DE::DeutscheBahn] diff --git a/lib/Travel/Status/DE/DeutscheBahn.pm b/lib/Travel/Status/DE/DeutscheBahn.pm index 9cda933..46b679e 100644 --- a/lib/Travel/Status/DE/DeutscheBahn.pm +++ b/lib/Travel/Status/DE/DeutscheBahn.pm @@ -117,8 +117,8 @@ sub results { my $xp_info = XML::LibXML::XPathExpression->new('./td[@class="ris"]'); my $re_via = qr{ - ^ \s* (.+?) \s* \n - \d{1,2}:\d{1,2} + ^ \s* (?<stop> .+? ) \s* \n + (?<time> \d{1,2}:\d{1,2} ) }mx; if ( defined $self->{results} ) { @@ -164,13 +164,12 @@ sub results { $first = 0; next; } - my $stop = $1; - if ( $stop =~ m{ [(] Halt \s entf.llt [)] }ox ) { + if ( $+{stop} =~ m{ [(] Halt \s entf.llt [)] }ox ) { next; } - push( @via, $stop ); + push( @via, [ $+{time}, $+{stop} ] ); } push( diff --git a/lib/Travel/Status/DE/DeutscheBahn/Result.pm b/lib/Travel/Status/DE/DeutscheBahn/Result.pm index 1ed2527..1d05fe9 100644 --- a/lib/Travel/Status/DE/DeutscheBahn/Result.pm +++ b/lib/Travel/Status/DE/DeutscheBahn/Result.pm @@ -62,7 +62,8 @@ sub origin { sub route { my ($self) = @_; - return @{ $self->{route} }; + my @stops = map { $_->[1] } @{ $self->{route} }; + return @stops; } sub route_interesting { @@ -115,6 +116,12 @@ sub route_interesting { } +sub route_timetable { + my ($self) = @_; + + return @{ $self->{route} }; +} + 1; __END__ @@ -217,6 +224,11 @@ Returns the raw string used to create the route array. Note that canceled stops are filtered from B<route>, but still present in B<route_raw>. +=item $result->route_timetable + +Similar to B<route>. however, this function returns a list of array +references of the form C<< [ arrival time, station name ] >>. + =item $result->time Returns the arrival/departure time as string in "hh:mm" format. @@ -4,7 +4,7 @@ use warnings; use 5.010; use File::Slurp qw(slurp); -use Test::More tests => 96; +use Test::More tests => 97; BEGIN { use_ok('Travel::Status::DE::DeutscheBahn'); @@ -49,6 +49,22 @@ is_deeply([$departures[8]->route], 'Feldhausen', 'Dorsten', 'Hervest-Dorsten', 'Deuten', 'Rhade', 'Marbeck-Heiden', 'Borken(Westf)'], '9th result: route ok'); +is_deeply([$departures[8]->route_timetable], + [ + ['19:36', 'Essen-Borbeck'], + ['19:43', 'Bottrop Hbf'], + ['19:50', 'Gladbeck West'], + ['19:53', 'Gladbeck-Zweckel'], + ['19:56', 'Feldhausen'], + ['20:01', 'Dorsten'], + ['20:05', 'Hervest-Dorsten'], + ['20:10', 'Deuten'], + ['20:15', 'Rhade'], + ['20:21', 'Marbeck-Heiden'], + ['20:27', 'Borken(Westf)'], + ], + '9th result: route_timetable ok'); + is_deeply([$departures[5]->route_interesting(3)], ['Essen-Steele', 'Essen-Steele Ost', 'Bochum'], '6th result: route_interesting(3) ok'); |