summaryrefslogtreecommitdiff
path: root/index.pl
diff options
context:
space:
mode:
authorDaniel Friesel <derf@finalrewind.org>2017-04-23 20:26:22 +0200
committerDaniel Friesel <derf@finalrewind.org>2017-04-23 20:26:22 +0200
commitce13f8594be9d0c2aa14a19f2bfe50357daab199 (patch)
tree46a8e2ecd190020d109a9e86fe11c2a98b126cd9 /index.pl
parenta69271338879099a1ffee9bc2d0a744c6d2cb75f (diff)
add a real simple text-only interface
Diffstat (limited to 'index.pl')
-rw-r--r--index.pl40
1 files changed, 39 insertions, 1 deletions
diff --git a/index.pl b/index.pl
index d153fe3..124b7fc 100644
--- a/index.pl
+++ b/index.pl
@@ -2,6 +2,7 @@
use Mojolicious::Lite;
use Cache::File;
use File::Slurp qw(read_file write_file);
+use List::Util qw(max);
use List::MoreUtils qw();
use Travel::Status::DE::HAFAS;
use Travel::Status::DE::HAFAS::StopFinder;
@@ -332,7 +333,13 @@ sub handle_request {
$self->stash( title => 'db-infoscreen' );
$self->stash( version => $VERSION );
- if ( not( $template ~~ [qw[clean json marudor multi single]] ) ) {
+ if ( $station =~ s{ [.] txt $ }{}x ) {
+ $template = 'text';
+ $self->param( station => $station );
+ $self->stash( layout => 'text' );
+ }
+
+ if ( not( $template ~~ [qw[clean json marudor multi single text]] ) ) {
$template = 'clean';
}
@@ -708,6 +715,20 @@ sub handle_request {
);
}
}
+ elsif ( $template eq 'text' ) {
+ push(
+ @departures,
+ [
+ sprintf( '%5s %s%s',
+ $time,
+ ( $delay and $delay > 0 ) ? q{+} : q{},
+ $delay || q{} ),
+ $result->train,
+ $result->destination,
+ $platform // q{ }
+ ]
+ );
+ }
elsif ( $backend eq 'iris' ) {
push(
@departures,
@@ -841,6 +862,23 @@ sub handle_request {
);
}
}
+ elsif ( $template eq 'text' ) {
+ my @line_length;
+ for my $i ( 0 .. $#{ $departures[0] } ) {
+ $line_length[$i] = max map { length( $_->[$i] ) } @departures;
+ }
+ my $output = q{};
+ for my $departure (@departures) {
+ $output .= sprintf(
+ join( q{ }, ( map { "%-${_}s" } @line_length ) ) . "\n",
+ @{$departure}[ 0 .. $#{$departure} ]
+ );
+ }
+ $self->render(
+ text => $output,
+ format => 'text',
+ );
+ }
else {
my $station_name = $data->{station_name} // $station;
$self->render(