summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore9
-rwxr-xr-xBuild.PL25
-rwxr-xr-xbin/db-fakedisplay93
-rw-r--r--share/template.html94
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>