initial import of App::SCS code
[scpubgit/App-SCS.git] / lib / App / SCS / Plugin / Core / PagePlugin / Template.pm
1 package App::SCS::Plugin::Core::PagePlugin::Template;
2
3 use Moo;
4
5 with 'App::SCS::Role::PagePlugin';
6
7 has templates => (is => 'ro', required => 1);
8
9 has name => (is => 'ro', required => 1);
10
11 sub filter_html_zoom {
12   my ($self, $zoom) = @_;
13   my $template_page = $self->templates->get({ path => $self->name })
14     or die "No such template ${\$self->name}";
15   my $template_zoom = HTML::Zoom->from_html($template_page->html);
16   my @ev;
17   $template_zoom->collect('*[data-replace]', { into => \@ev })
18                 ->then
19                 ->${\sub {
20                     my $sel = $ev[0]->{attrs}{'data-replace'};
21                     $zoom->collect($self, { into => \my @replace })->run;
22                     shift->replace(\@replace);
23                   }}
24 }
25
26 1;