diff options
-rw-r--r-- | .gitignore | 9 | ||||
-rwxr-xr-x | Build.PL | 25 | ||||
-rwxr-xr-x | bin/db-fakedisplay | 93 | ||||
-rw-r--r-- | share/template.html | 94 |
4 files changed, 221 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..558fa12 --- /dev/null +++ b/.gitignore @@ -0,0 +1,9 @@ +/_build +/Build +/blib +/cover_db/ +/MANIFEST +/MANIFEST.bak +/MANIFEST.SKIP +/MANIFEST.SKIP.bak +/MYMETA.yml diff --git a/Build.PL b/Build.PL new file mode 100755 index 0000000..6dcd0fa --- /dev/null +++ b/Build.PL @@ -0,0 +1,25 @@ +#!/usr/bin/env perl + +use strict; +use warnings; +use Module::Build; + +Module::Build->new( + + build_requires => { + 'Module::Build' => '0.36', + }, + dist_name => 'db-fakedisplay', + dist_version_from => 'bin/db-fakedisplay', + license => 'unrestricted', + requires => { + 'perl' => '5.10.0', + 'File::ShareDir' => 0, + 'HTML::Template' => 0, + 'List::Util' => 0, + 'Travel::Status::DE::DeutscheBahn' => 0, + }, + share_dir => 'share', + sign => 1, + +)->create_build_script(); diff --git a/bin/db-fakedisplay b/bin/db-fakedisplay new file mode 100755 index 0000000..7930285 --- /dev/null +++ b/bin/db-fakedisplay @@ -0,0 +1,93 @@ +#!/usr/bin/env perl + +use strict; +use warnings; +use 5.010; + +use File::ShareDir qw(dist_file); +use HTML::Template; +use List::Util qw(first); +use Travel::Status::DE::DeutscheBahn; + +our $VERSION = '0.00'; + +sub show_help { + my ($exit_status) = @_; + + say 'Usage: db-fakedisplay <station> <platform>'; + + exit $exit_status; +} + +if (@ARGV != 2) { + show_help(1); +} + +my ($station, $platform) = @ARGV; +my $template_file = dist_file('db-fakedisplay', 'template.html'); +my $template = HTML::Template->new( filename => $template_file); + +my $status = Travel::Status::DE::DeutscheBahn->new( + station => $station +); + +my $info = first { $_->platform eq $platform } $status->results; + +if (not defined $info) { + say STDERR 'Got no departures for that platform'; + exit 1; +} + +my @via = $info->route; +my $extra = $info->info; + +$extra =~ s{ (?: ^ | , ) (?: p.nktlich | k [.] A [.] ) }{}x; + +$template->param( + time => $info->time, + train => $info->train, + via => [ map { { stop => $_ } } splice(@via, 0, 3) ], + destination => $info->destination, + platform => $info->platform, + info => $extra, +); + +say $template->output; + +__END__ + +=head1 NAME + +=head1 SYNOPSIS + +=head1 VERSION + +=head1 DESCRIPTION + +=head1 OPTIONS + +=over + +=back + +=head1 EXIT STATUS + +=head1 CONFIGURATION + +None. + +=head1 DEPENDENCIES + +=over + +=back + +=head1 BUGS AND LIMITATIONS + +=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. diff --git a/share/template.html b/share/template.html new file mode 100644 index 0000000..e7e6335 --- /dev/null +++ b/share/template.html @@ -0,0 +1,94 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" + "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> +<head> + <title></title> + <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"/> + <style type="text/css"> + + div.display { + background-color: #0000ff; + color: white; + font-family: Sans-Serif; + font-weight: bold; + position: absolute; + left: 1em; + top: 1em; + width: 28em; + height: 4.5em; + border: 0.7em solid #000066; + } + + div.display div { + overflow: hidden; + position: absolute; + } + + div.time { + top: 0em; + left: 0em; + font-size: 1.7em; + } + + div.train { + left: 0em; + top: 1.8em; + } + + div.via { + top: 1.5em; + left: 5.8em; + width: 17em; + height: 1em; + } + + div.destination { + top: 1.2em; + left: 2.9em; + width: 17em; + font-size: 2em; + } + + div.platform { + top: 0em; + right: 0em; + font-size: 3em; + } + + div.info { + top: 0em; + left: 5.8em; + width: 16.5em; + background-color: white; + color: #0000ff; + } + + </style> +</head> +<body> +<div class="display"> +<div class="time"> +<TMPL_VAR time> +</div> +<div class="train"> +<TMPL_VAR train> +</div> +<div class="via"> +<TMPL_LOOP via> +<span><TMPL_VAR stop></span> +</TMPL_LOOP> +</div> +<div class="destination"> +<TMPL_VAR destination> +</div> +<div class="platform"> +<TMPL_VAR platform> +</div> +<TMPL_IF info> +<div class="info"> +<TMPL_VAR info> +</div> +</TMPL_IF> +</div> +</body> +</html> |