Commit 1e048ee2 authored by Birte Kristina Friesel's avatar Birte Kristina Friesel
Browse files

add new ::Stop class for stop data

parent 5106c6d1
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -6,8 +6,8 @@ git HEAD
    * EFA->new: Add full_routes config option
    * EFA: Add identified_data accessor
    * Result: Add route_pre, route_post and route_interesting accessors
    * efa-m: Add -f / --full-route option
    * efa-m: Add -v / --via option
    * Add Travel::Routing::DE::EFA::Stop module

Travel::Status::DE::VRR 1.09 - Thu Apr 30 2015

+8 −8
Original line number Diff line number Diff line
@@ -106,23 +106,23 @@ sub format_route {
			say "BUG";
			next;
		}
		if ( not defined $stop->{arr_time} ) {
		if ( not defined $stop->arr_time ) {
			$output .= sprintf( "        %5s  %40s %s\n",
				$stop->{dep_time}, $stop->{stop}, $stop->{platform}, );
				$stop->dep_time, $stop->name, $stop->platform, );
		}
		elsif ( not defined $stop->{dep_time} ) {
		elsif ( not defined $stop->dep_time ) {
			$output .= sprintf( "%5s          %40s %s\n",
				$stop->{arr_time}, $stop->{stop}, $stop->{platform}, );
				$stop->arr_time, $stop->name, $stop->platform, );
		}
		elsif ( $stop->{arr_time} eq $stop->{dep_time} ) {
		elsif ( $stop->arr_time eq $stop->dep_time ) {
			$output .= sprintf( "    %5s      %40s %s\n",
				$stop->{dep_time}, $stop->{stop}, $stop->{platform}, );
				$stop->dep_time, $stop->name, $stop->platform, );
		}
		else {
			$output .= sprintf(
				"%5s → %5s  %40s %s\n",
				$stop->{arr_time}, $stop->{dep_time},
				$stop->{stop},     $stop->{platform},
				$stop->arr_time, $stop->dep_time,
				$stop->name,     $stop->platform,
			);
		}
	}
+5 −4
Original line number Diff line number Diff line
@@ -12,6 +12,7 @@ use Carp qw(confess cluck);
use Encode qw(encode decode);
use Travel::Status::DE::EFA::Line;
use Travel::Status::DE::EFA::Result;
use Travel::Status::DE::EFA::Stop;
use LWP::UserAgent;
use XML::LibXML;

@@ -334,15 +335,15 @@ sub parse_route {
		# cases.
		push(
			@ret,
			{
			Travel::Status::DE::EFA::Stop->new(
				arr_date => sprintf_date( $dates[0] ),
				arr_time => sprintf_time( $times[0] ),
				dep_date => sprintf_date( $dates[-1] ),
				dep_time => sprintf_time( $times[-1] ),
				stop     => decode( 'UTF-8', $e->getAttribute('name') ),
				stop_suf => decode( 'UTF-8', $e->getAttribute('nameWO') ),
				name     => decode( 'UTF-8', $e->getAttribute('name') ),
				name_suf => decode( 'UTF-8', $e->getAttribute('nameWO') ),
				platform => $e->getAttribute('platformName'),
			}
			)
		);
	}

+122 −0
Original line number Diff line number Diff line
package Travel::Status::DE::EFA::Stop;

use strict;
use warnings;
use 5.010;

no if $] >= 5.018, warnings => 'experimental::smartmatch';

use parent 'Class::Accessor';

our $VERSION = '1.09';

Travel::Status::DE::EFA::Stop->mk_ro_accessors(
	qw(arr_date arr_time dep_date dep_time name name_suf platform));

sub new {
	my ( $obj, %conf ) = @_;

	my $ref = \%conf;

	return bless( $ref, $obj );
}

sub TO_JSON {
	my ($self) = @_;

	return { %{$self} };
}

1;

__END__

=head1 NAME

Travel::Status::DE::EFA::Stop - Information about a stop (station) contained
in a Travel::Status::DE::EFA::Result's route

=head1 SYNOPSIS

    for my $stop ($departure->route_post) {
        printf(
            "%s -> %s : %40s %s\n",
            $stop->arr_time // q{     }, $stop->dep_time // q{     },
            $stop->name, $stop->platform
        );
    }

=head1 VERSION

version 1.09

=head1 DESCRIPTION

Travel::Status::DE::EFA::stop describes a TODO.

=head1 METHODS

=head2 ACCESSORS

TODO

=over

=item $stop->arr_date

=item $stop->arr_time

=item $stop->dep_date

=item $stop->dep_time

=item $stop->name

=item $stop->name_suf

=item $stop->platform

=back

=head2 INTERNAL

=over

=item $stop = Travel::Status::DE::EFA::Stop->new(I<%data>)

Returns a new Travel::Status::DE::EFA::Stop object.  You should not need to
call this.

=item $stop->TO_JSON

Allows the object data to be serialized to JSON.

=back

=head1 DIAGNOSTICS

None.

=head1 DEPENDENCIES

=over

=item Class::Accessor(3pm)

=back

=head1 BUGS AND LIMITATIONS

None known.

=head1 SEE ALSO

Travel::Status::DE::EFA(3pm).

=head1 AUTHOR

Copyright (C) 2015 by Daniel Friesel E<lt>derf@finalrewind.orgE<gt>

=head1 LICENSE

This module is licensed under the same terms as Perl itself.