require Exporter;
our @ISA = qw(Exporter);
-our @EXPORT = qw(paginate);
+our @EXPORT = qw(paginate disable_paginating);
+
+use List::MoreUtils qw(any);
sub paginate {
my ($self, %params) = @_;
my ($cur, $max) = @_;
return [
map {
- active => $_ != $cur,
- page => $_,
+ active => $_ != $cur,
+ page => $_,
+ visible => calc_visibility($cur, $max, $_),
}, 1 .. $max
];
}
+sub calc_visibility {
+ my ($cur, $max, $this) = @_;
+ any { $_ } abs($cur - $this) < 5,
+ $this <= 3,
+ $this == $max,
+ any { abs ($cur - $this) == $_ } 10, 50, 100, 500, 1000, 5000;
+}
+
+sub disable_paginating {
+ my ($self, %params) = @_;
+
+ delete $params{args}{page};
+ delete $params{args}{per_page};
+}
+
1;
__END__