package Travel::Routing::DE::VRR::Route::Part; use strict; use warnings; use 5.010; use parent 'Class::Accessor'; our $VERSION = '1.3'; Travel::Routing::DE::VRR::Route::Part->mk_ro_accessors( qw(arrival_stop arrival_time departure_stop departure_time train_line train_destination) ); sub new { my ( $obj, %conf ) = @_; my $ref = \%conf; return bless( $ref, $obj ); } sub extra { my ($self) = @_; return @{ $self->{extra} // [] }; } 1; __END__ =head1 NAME Travel::Routing::DE::VRR::Route::Part - Describes one connection between two points, without interchanges =head1 SYNOPSIS for my $part ( $route->parts ) { if ( $part->extra ) { say join( "\n", $part->extra ); } printf( "%s at %s -> %s at %s, via %s to %s", $part->departure_time, $part->departure_stop, $part->arrival_time, $part->arrival_stop, $part->train_line, $part->train_destination, ); } =head1 VERSION version 0.3 =head1 DESCRIPTION B holds one specific connection (without interchanges) between two points. It specifies the start/stop point and time, the train line and its destination, and optional additional data. It is usually obtained by a call to Travel::Routing::DE::VRR::Route(3pm)'s B method. =head1 METHODS =over =item $part = Travel::Routing::DE::VRR::Route::Part->new(I<%data>) Creates a new Travel::Routing::DE::VRR::Route::Part object. I consists of: =over =item B => I:I Arrival time =item B => I Arrival stop (city plus station / address) =item B => I Departure time =item B => I Departure stop (city plus station / address) =item B => I Destination of the train connecting the stops =item B => I The train's line name. =item B => B<[> [ I, [ I [ I<...> ] ] ] B<]> Additional information about this connection. Array-ref of newline-terminated strings. =back =item $part->get(I) Returns the value of I (B, B etc., see B). Each of these I also has an accessor. So C<< $part->departure_time() >> is the same as C<< $part->get('departure_time') >>. =item $part->extra() Returns a list of additional information about this route part, if provided. Returns an empty list otherwise. =back =head1 DIAGNOSTICS None. =head1 DEPENDENCIES =over =item * Class::Accessor(3pm) =back =head1 BUGS AND LIMITATIONS None known. =head1 SEE ALSO Travel::Routing::DE::VRR(3pm). =head1 AUTHOR Copyright (C) 2011 by Daniel Friesel Ederf@finalrewind.orgE =head1 LICENSE 0. You just DO WHAT THE FUCK YOU WANT TO.