summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authordakkar <dakkar@thenautilus.net>2013-05-27 16:40:18 +0100
committerdakkar <dakkar@thenautilus.net>2013-05-27 16:40:18 +0100
commit2cbf023942b42d798d73b5ce85b20ddadacc6cec (patch)
tree3ba85682364b48d2dd72d8a37b57b1b204be7fcf /lib
parentkill debug Data::Printer (diff)
downloadHomePanel-2cbf023942b42d798d73b5ce85b20ddadacc6cec.tar.gz
HomePanel-2cbf023942b42d798d73b5ce85b20ddadacc6cec.tar.bz2
HomePanel-2cbf023942b42d798d73b5ce85b20ddadacc6cec.zip
include busses in html
Diffstat (limited to 'lib')
-rw-r--r--lib/HomePanel/Render.pm78
1 files changed, 78 insertions, 0 deletions
diff --git a/lib/HomePanel/Render.pm b/lib/HomePanel/Render.pm
new file mode 100644
index 0000000..a1bbcc9
--- /dev/null
+++ b/lib/HomePanel/Render.pm
@@ -0,0 +1,78 @@
+package HomePanel::Render;
+use Moose;
+use MooseX::Types::Path::Class;
+use Template::Provider::Encoding;
+use Template::Stash::ForceUTF8;
+use Template;
+
+has [qw(provider stash template)] => (
+ is => 'ro',
+ lazy_build => 1,
+);
+sub _build_provider {
+ Template::Provider::Encoding->new(
+ ABSOLUTE => 1,
+ RELATIVE => 1,
+ );
+}
+sub _build_stash {
+ Template::Stash::ForceUTF8->new;
+}
+sub _build_template {
+ my ($self) = @_;
+ Template->new(
+ LOAD_TEMPLATES => [ $self->provider ],
+ STASH => $self->stash
+ );
+}
+
+has template_file => (
+ is => 'ro',
+ isa => 'Path::Class::File',
+ coerce => 1,
+ required => 1,
+);
+
+has [qw(forecast bus tube)] => (
+ is => 'ro',
+ required => 1,
+);
+
+{
+my %icon_for=(
+ 'clear-day' => '2',
+ 'clear-night' => '3',
+ rain => '18',
+ snow => '23',
+ sleet => '24',
+ wind => '6',
+ fog => '13',
+ cloudy => '14',
+ 'partly-cloudy-day' => '8',
+ 'partly-cloudy-night' => '9',
+);
+sub icon_for {
+ my ($status) = @_;
+
+ return "icons/".($icon_for{$status}//'45').".svg";
+}
+}
+
+sub render {
+ my ($self) = @_;
+
+ my $output;
+
+ $self->template->process(
+ $self->template_file->stringify,
+ {
+ f => $self->forecast,
+ b => $self->bus,
+ t => $self->tube,
+ icon_for => \&icon_for,
+ },
+ \$output,
+ ) or die $self->template->error;
+
+ return $output;
+}