From 2cbf023942b42d798d73b5ce85b20ddadacc6cec Mon Sep 17 00:00:00 2001 From: dakkar Date: Mon, 27 May 2013 16:40:18 +0100 Subject: include busses in html --- lib/HomePanel/Render.pm | 78 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 lib/HomePanel/Render.pm (limited to 'lib') 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; +} -- cgit v1.2.3