From d382955cb3ade340fa9e667ade8db7ddabadd2c0 Mon Sep 17 00:00:00 2001 From: Gianni Ceccarelli Date: Tue, 3 Dec 2013 14:42:07 +0000 Subject: only load the template once --- lib/HomePanel/Driver.pm | 13 ++++++++++--- lib/HomePanel/Render.pm | 13 ++++--------- 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/lib/HomePanel/Driver.pm b/lib/HomePanel/Driver.pm index c196486..749a958 100644 --- a/lib/HomePanel/Driver.pm +++ b/lib/HomePanel/Driver.pm @@ -158,16 +158,23 @@ has output_file => ( coerce => AbsPath->coercion, required => 1, ); +has render => ( + is => 'lazy', +); +sub _build_render { + return HomePanel::Render->new({ + template_file => $_[0]->template_file, + }); +} sub write_page { my ($self) = @_; - my $output = HomePanel::Render->new({ - template_file => $self->template_file, + my $output = $self->render->render({ forecast => $self->forecast_response, bus => $self->bus_response, tube => $self->tube_response, - })->render; + }); $self->output_file->spew_utf8($output); diff --git a/lib/HomePanel/Render.pm b/lib/HomePanel/Render.pm index cc16eb5..fe165e3 100644 --- a/lib/HomePanel/Render.pm +++ b/lib/HomePanel/Render.pm @@ -34,11 +34,6 @@ has template_file => ( required => 1, ); -has [qw(forecast bus tube)] => ( - is => 'ro', - required => 1, -); - { my %icon_for=( 'clear-day' => '2', @@ -60,16 +55,16 @@ sub icon_for { } sub render { - my ($self) = @_; + my ($self,$data) = @_; my $output; $self->template->process( $self->template_file->stringify, { - f => $self->forecast, - b => $self->bus, - t => $self->tube, + f => $data->{forecast}, + b => $data->{bus}, + t => $data->{tube}, icon_for => \&icon_for, now => DateTime->now, format_duration => sub { DateTime::Format::Duration->new(@_) }, -- cgit v1.2.3