Commit d30a3aff authored by Birte Kristina Friesel's avatar Birte Kristina Friesel
Browse files

make "place" optional

parent 2ccac68c
Loading
Loading
Loading
Loading
+16 −7
Original line number Diff line number Diff line
@@ -56,7 +56,7 @@ if ($list_services) {
	show_services();
}

if ( @ARGV != 2 ) {
if ( @ARGV < 1 or @ARGV > 2 ) {
	show_help(1);
}

@@ -66,7 +66,14 @@ if ( @ARGV != 2 ) {
@grep_mots      = split( qr{,}, join( q{,}, @grep_mots ) );
@grep_platforms = split( qr{,}, join( q{,}, @grep_platforms ) );

my ( $place, $input ) = @ARGV;
my ( $place, $input );

if ( @ARGV == 1 ) {
	$input = $ARGV[0];
}
else {
	( $place, $input ) = @ARGV;
}

if ( $input =~ s{ ^ (?<type> address|poi|stop) : }{}x ) {
	$input_type = $+{type};
@@ -121,7 +128,7 @@ sub new_efa_by_url {
sub show_help {
	my ($code) = @_;

	print "Usage: efa-m [-d <dd.mm.yyyy>] [-t <hh:mm>] <city> <station>\n"
	print "Usage: efa-m [-d <dd.mm.yyyy>] [-t <hh:mm>] [place] <station>\n"
	  . "See also: man efa-m\n";

	exit $code;
@@ -385,7 +392,7 @@ efa-m - Unofficial interface to the efa.vrr.de departure monitor

B<efa-m> [B<-Lr>] [B<-d> I<dd.mm.yyyy>] [B<-t> I<hh:mm>]
[B<-l> I<lines>] [B<-p> I<platforms>] [B<-u> I<url>]
I<city> [I<type>B<:>]I<name>
[I<city>] [I<type>B<:>]I<name>

=head1 VERSION

@@ -393,9 +400,11 @@ version 1.17

=head1 DESCRIPTION

B<efa-m> lists scheduled tram, bus and train departures at the location I<name>
in I<city>.  Realtime data (i.e. delays) is included if available, it's
visible in the output as a "+x" remark (meaning a delay of x minutes).
B<efa-m> lists scheduled tram, bus and train departures at the location I<name>.
If I<city> is specified, I<name> refers to a location within I<city>. Otherwise,
I<name> must be self-contained. I.e., both C<< efa Essen Hbf >> and
C<< efa "Essen Hbf" >> are valid. Note, however, than C<< efa E Hbf >> works,
but C<< efa "E Hbf" >> does not.

By default, I<name> refers to a stop, this can be changed by specifying
I<type>.  Supported types are B<address> and B<poi> (point of interest).
+10 −7
Original line number Diff line number Diff line
@@ -31,8 +31,8 @@ sub new {
	my @time = @now[ 2, 1 ];
	my @date = ( $now[3], $now[4] + 1, $now[5] + 1900 );

	if ( not( $opt{place} and $opt{name} ) ) {
		confess('You need to specify a place and a name');
	if ( not( $opt{name} ) ) {
		confess('You must specify a name');
	}
	if ( $opt{type} and not( $opt{type} ~~ [qw[stop address poi]] ) ) {
		confess('type must be stop, address or poi');
@@ -93,9 +93,6 @@ sub new {
			nameState_dm           => 'empty',
			name_dm                => encode( 'UTF-8', $opt{name} ),
			outputFormat           => 'XML',
			placeInfo_dm           => 'invalid',
			placeState_dm          => 'empty',
			place_dm               => encode( 'UTF-8', $opt{place} ),
			ptOptionsActive        => '1',
			requestID              => '0',
			reset                  => 'neue Anfrage',
@@ -109,6 +106,12 @@ sub new {
		developer_mode => $opt{developer_mode},
	};

	if ( $opt{place} ) {
		$self->{post}{placeInfo_dm}  = 'invalid';
		$self->{post}{placeState_dm} = 'empty';
		$self->{post}{place_dm}      = encode( 'UTF-8', $opt{place} );
	}

	if ( $opt{full_routes} ) {
		$self->{post}->{depType}                = 'stopEvents';
		$self->{post}->{includeCompleteStopSeq} = 1;
@@ -656,7 +659,7 @@ Travel::Status::DE::EFA - unofficial EFA departure monitor

    my $status = Travel::Status::DE::EFA->new(
        efa_url => 'https://efa.vrr.de/vrr/XSLT_DM_REQUEST',
        place => 'Essen', name => 'Helenenstr'
        name => 'Essen Helenenstr'
    );

    for my $d ($status->results) {
@@ -684,7 +687,7 @@ It reports all upcoming tram/bus/train departures at a given place.
=item my $status = Travel::Status::DE::EFA->new(I<%opt>)

Requests the departures as specified by I<opts> and returns a new
Travel::Status::DE::EFA object.  B<efa_url>, B<place> and B<name> are
Travel::Status::DE::EFA object.  B<efa_url> and B<name> are
mandatory.  Dies if the wrong I<opts> were passed.

Arguments: