package Local::Paginator; # adapted from Template::Plugin::Bootstrap::Pagination use Template; use Data::Page; use Data::Printer; use base qw(Exporter); our @EXPORT_OK = qw(paginate); my $pagination_template_string = <<"EOTEMPLATE"; [%- USE Bootstrap.Pagination -%] [%- Bootstrap.Pagination.pagination(pager = pager, uri = uri, siblings = 7, version = 3) -%] EOTEMPLATE my $pager_template_string = <<"EOTEMPLATE"; [%- USE Bootstrap.Pagination -%] [%- Bootstrap.Pagination.pager(pager = pager, uri = uri, version = 3) -%] EOTEMPLATE sub paginate { my $args = shift; # p $args; # uri, total_entries, entries_per_page, current_page my $pager = Data::Page->new(); $pager->$_($args->{$_}) for qw(total_entries entries_per_page current_page); my $uri = $args->{uri} . '__PAGE__'; # placeholder replaced inline my $template = Template->new(STRICT => 1); my %h = (); { my $output; $template->process(\$pagination_template_string, { pager => $pager, uri => $uri, }, \$output) or die $template->error(); $h{pagination} = $output; } { my $output; $template->process(\$pager_template_string, { pager => $pager, uri => $uri, }, \$output) or die $template->error(); $h{pager} = $output; } # p %h; return \%h; } 1;