diff options
Diffstat (limited to 'bin')
-rwxr-xr-x | bin/hafas-m | 50 |
1 files changed, 28 insertions, 22 deletions
diff --git a/bin/hafas-m b/bin/hafas-m index dc053c9..33a4d9f 100755 --- a/bin/hafas-m +++ b/bin/hafas-m @@ -10,8 +10,6 @@ use List::MoreUtils qw(uniq); use List::Util qw(first max); use Travel::Status::DE::HAFAS; -my %train_type; - my ( $date, $time ); my $arrivals = 0; my $ignore_late = 0; @@ -19,7 +17,7 @@ my $types = q{}; my $language; my $developer_mode; my ( $list_services, $service, $hafas_url ); -my @excluded_mots; +my ( @excluded_mots, @exclusive_mots ); my @output; @@ -49,30 +47,13 @@ if ($list_services) { exit 0; } -for my $type ( split( qr{,}, $types ) ) { - if ( substr( $type, 0, 1 ) eq q{!} ) { - $train_type{ substr( $type, 1 ) } = 0; - push( @excluded_mots, substr( $type, 1 ) ); - } - else { - $train_type{$type} = 1; - } -} - -if ( $train_type{help} or $train_type{list} or $train_type{'?'} ) { - my @mots - = @{ Travel::Status::DE::HAFAS::get_service($service)->{productbits} }; - @mots = grep { $_ ne 'x' } @mots; - @mots = uniq @mots; - @mots = sort @mots; - say join( "\n", @mots ); - exit 0; -} +parse_mot_options(); my $status = Travel::Status::DE::HAFAS->new( date => $date, language => $language, excluded_mots => \@excluded_mots, + exclusive_mots => \@exclusive_mots, station => shift || show_help(1), time => $time, mode => $arrivals ? 'arr' : 'dep', @@ -97,6 +78,31 @@ sub show_version { exit 0; } +sub parse_mot_options { + + my $default_yes = 1; + my $help; + + for my $type ( split( qr{,}, $types ) ) { + if ( $type eq 'help' or $type eq 'list' or $type eq '?' ) { + my @mots + = @{ Travel::Status::DE::HAFAS::get_service($service) + ->{productbits} }; + @mots = grep { $_ ne 'x' } @mots; + @mots = uniq @mots; + @mots = sort @mots; + say join( "\n", @mots ); + exit 0; + } + elsif ( substr( $type, 0, 1 ) eq q{!} ) { + push( @excluded_mots, substr( $type, 1 ) ); + } + else { + push( @exclusive_mots, $type ); + } + } +} + sub display_result { my (@lines) = @_; |