diff options
Diffstat (limited to 'bin')
-rwxr-xr-x | bin/db-fakedisplay | 246 |
1 files changed, 0 insertions, 246 deletions
diff --git a/bin/db-fakedisplay b/bin/db-fakedisplay deleted file mode 100755 index 3a3b0f9..0000000 --- a/bin/db-fakedisplay +++ /dev/null @@ -1,246 +0,0 @@ -#!/usr/bin/env perl - -use strict; -use warnings; -use 5.010; - -use File::ShareDir qw(dist_file); -use Getopt::Long qw(:config no_ignore_case); -use HTML::Template; -use List::Util qw(first); -use Travel::Status::DE::DeutscheBahn; - -our $VERSION = '0.00'; - -my @params; -my ( $station, @platforms ); -my $mode = 'single'; -my $template_file; -my $template; - -GetOptions( - - 'h|help' => sub { show_help(0) }, - 'm|mode=s' => \$mode, - 't|template=s' => \&handle_template, - 'V|version' => sub { say "db-fakedisplay version ${VERSION}"; exit 0 }, - -) or show_help(1); - -if ( $mode eq 'single' and not $template_file ) { - $template_file = dist_file( 'db-fakedisplay', 'single-lcd.html' ); -} - -( $station, @platforms ) = @ARGV; -$template_file //= dist_file( 'db-fakedisplay', 'multi-lcd.html' ); -$template = HTML::Template->new( - filename => $template_file, - loop_context_vars => 1 -); - -if ( not defined $station ) { - show_help(1); -} - -my $status = Travel::Status::DE::DeutscheBahn->new( station => $station ); - -sub handle_template { - my ( undef, $template_name ) = @_; - - if ( -e $template_name ) { - $template_file = $template_name; - } - else { - $template_file = dist_file( 'db-fakedisplay', $template_name ); - } - - return; -} - -sub show_help { - my ($exit_status) = @_; - - say 'Usage: db-fakedisplay [-t template] <station> [platforms ...]'; - say 'See also: man db-fakedisplay'; - - exit $exit_status; -} - -sub add_result { - my ($result) = @_; - - push( - @params, - { - time => $result->time, - train => $result->train, - via => [ map { { stop => $_ } } $result->route_interesting(3) ], - destination => $result->destination, - platform => ( split( / /, $result->platform ) )[0], - info => $result->info, - } - ); - - return; -} - -if ( $mode eq 'single' ) { - if ( not @platforms ) { - for my $result ( $status->results ) { - if ( $result->platform ~~ \@platforms ) { - next; - } - push( @platforms, $result->platform ); - } - @platforms = sort { $a <=> $b } @platforms; - } - - for my $platform (@platforms) { - my $result = first { $_->platform =~ m{ ^ $platform (?: \s | $ )}x } - $status->results; - - if ( not defined $result ) { - push( @params, { platform => $platform } ); - } - else { - add_result($result); - } - } -} -else { - for my $result ( $status->results ) { - add_result($result); - } -} - -$template->param( - departures => \@params, - version => $VERSION -); - -say $template->output; - -__END__ - -=head1 NAME - -db-fakedisplay - Show train departures, as seen on the displays on most main stations - -=head1 SYNOPSIS - -B<db-fakedisplay> [-t I<template>] I<station> [I<platforms ...>] - -=head1 VERSION - -version 0.00 - -=head1 DESCRIPTION - -B<db-fakedisplay> outputs HTML showing the next departure for every -I<platform> on I<station> on stdout. The HTML is styled to look like the LCDs -installed on most (major) stations. - -If no I<platforms> were specified, B<db-fakedisplay> shows all platforms for -which departures are reported. - -=head1 OPTIONS - -=over - -=item B<-t>, B<--template> B<single-lcd.html>|I<filename> - -Select template. Specify either a I<filename> or one of the templates shipped -with B<db-fakedisplay> (right now only B<single-lcd.html> is available, which -is also the default). - -=item B<-V>, B<--version> - -Show version information. - -=back - -=head1 TEMPLATES - -B<db-fakedisplay> uses HTML::Template(3pm) to create the display. In case you -want to create a custom template, the following variables are available: - -=head2 departures - -This is a loop variable, use it with C<< <TMPL_LOOP departures> foo <TMPL_VAR -bar> ... </TMPL_LOOP> >>. - -This loop runs once for each requested platform. Inside it, you can use the -following variables: - -=over - -=item platform - -The platform from which the train departs - -=item time - -The departure time (I<HH>:I<MM>) - -=item train - -The train / line name, something like "RE 10111" or "S 1" - -=item via - -A loop variable. For each run, the B<stop> variable contains one of the -interesting stops the train will pass on its route. - -By default, it runs three times. - -=item destination - -The train's destination - -=item info - -Additional information about the train, such as delays. Unset if no -information is available (use C<< <TMPL_IF info> ... </TMPL_IF> >>). - -=item no-data - -Set if no departures were available for the requested platform. - -=back - -=head1 EXIT STATUS - -Zero. - -=head1 CONFIGURATION - -None. - -=head1 DEPENDENCIES - -=over - -=item * File::ShareDir(3pm) - -=item * HTML::Template(3pm) - -=item * Travel::Status::DE::DeutscheBahn(3pm) - -=back - -=head1 BUGS AND LIMITATIONS - -Unknown - -=head1 SEE ALSO - -There is some example output available at -L<http://finalrewind.org/projects/db-fakedisplay/>. - -=head1 AUTHOR - -Copyright (C) 2011 by Daniel Friesel E<lt>derf@finalrewind.orgE<gt> - -=head1 LICENSE - - 0. You just DO WHAT THE FUCK YOU WANT TO. |