The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

WWW::PTV::TimeTable - Class for operations with PTV timetables.

SYNOPSIS

        use WWW::PTV;
        my $ptv = WWW::PTV->new;
        
        # Get the next outbound departure time for route 1 from stop ID 19849
        my $next = $ptv->get_route_by_id(1)
                       ->get_outbound_tt;
        
        print "The next service is scheduled at @$next\n";
        
        # Get the next five services for route 1 from the same stop.
        my $next = $ptv->get_route_by_id(1)
                       ->get_outbound_tt
                       ->get_schedule_by_stop_id(19849)
                       ->next_five;

DESCRIPTION

This module implements a utility class providing operations for PTV timetables.

Please note the terminology used for the naming of this module should not imply relationships between routes, timetables, schedules and other objects. In brief, the relationships between objects defined in the WWW::PTV namespace are:

               1       *
        route --- has ---> timetables

                   1       *
        timetable --- has ---> schedules

                  1       *
        schedule --- has ---> stops (service times)

That is to say; a route may have one or more timetables (inbound, outbound, weekend, public holiday, etc.), each of which is composed of one or more schedules where a schedules is defined as the list of service times for a particular stop on that route.

METHODS

stop_ids ()

        my @stop_ids = $timetable->stop_ids;
        print "Stops on this route: " . join ", ", @stop_ids . "\n";

Returns a list of in order stop IDs for this route in the selected direction.

stop_names ()

Returns a list of in order stop IDs for this route in the selected direction.

        print "This service will be stopping at : " 
                . join ", ", $timetable->stop_names . "\n";

stop_names_and_ids ()

Returns a list of lists with each sublist containing the stop ID as the first element, and the station name as the second providing an in-order mapping of stop IDs and names.

get_schedule_by_stop_id ( $ID )

        # Print a nicely formatted list of service times for
        # the outbound direction of route 1 for stop ID 19849

        $ptv->get_route_by_id( 1 )
                ->get_outbound_tt
                ->get_schedule_by_stop_id( 19849 )
                ->pretty_print;

get_schedule_by_stop_name ( $NAME )

        # Get a list of service times for route 1 in the
        # outbound direction for the first station having 
        # a name matching /wood/i (this will be stop ID 
        # 19849 - 'Burwood').
        
        $ptv->get_route_by_id( 1 )
                ->get_outbound_tt
                ->get_schedule_by_stop_name( 'burwood' )
                ->as_list;

pretty_print ()

Prints a formatted version of the complete timetable. Note that for timetables with a large number of service times, this method will produce very wide output that may not be viewable even on large screens.

SEE ALSO

WWW::PTV, WWW::PTV::Area, WWW::PTV::Route, WWW::PTV::Stop, WWW::PTV::TimeTable::Schedule.

AUTHOR

Luke Poskitt, <ltp at cpan.org>

BUGS

Please report any bugs or feature requests to bug-www-ptv-timetable at rt.cpan.org, or through the web interface at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=WWW-PTV-TimeTable. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.

SUPPORT

You can find documentation for this module with the perldoc command.

    perldoc WWW::PTV::TimeTable

You can also look for information at:

LICENSE AND COPYRIGHT

Copyright 2014 Luke Poskitt.

This program is free software; you can redistribute it and/or modify it under the terms of either: the GNU General Public License as published by the Free Software Foundation; or the Artistic License.

See http://dev.perl.org/licenses/ for more information.