summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGianni Ceccarelli <dakkar@thenautilus.net>2013-12-03 14:42:07 +0000
committerGianni Ceccarelli <dakkar@thenautilus.net>2013-12-03 14:42:07 +0000
commitd382955cb3ade340fa9e667ade8db7ddabadd2c0 (patch)
tree1d33d22447533a9b647fcc51ee0f956e5fb1171a
parenttrying to remove leaks (diff)
downloadHomePanel-d382955cb3ade340fa9e667ade8db7ddabadd2c0.tar.gz
HomePanel-d382955cb3ade340fa9e667ade8db7ddabadd2c0.tar.bz2
HomePanel-d382955cb3ade340fa9e667ade8db7ddabadd2c0.zip
only load the template once
-rw-r--r--lib/HomePanel/Driver.pm13
-rw-r--r--lib/HomePanel/Render.pm13
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(@_) },