summaryrefslogtreecommitdiff
path: root/bin/db-fakedisplay
diff options
context:
space:
mode:
Diffstat (limited to 'bin/db-fakedisplay')
-rwxr-xr-xbin/db-fakedisplay246
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.