Commit | Line | Data |
ebd4c292 |
1 | package SCSite::LatestPageSet; |
2 | |
3 | use Moo; |
4 | |
5 | has _parent => (is => 'ro', required => 1, init_arg => 'parent'); |
6 | has _max_entries => (is => 'ro', required => 1, init_arg => 'max_entries'); |
7 | |
8 | sub flatten { |
9 | my ($self) = @_; |
10 | my @sorted = sort { |
fc436d2e |
11 | $b->created cmp $a->created |
ebd4c292 |
12 | } $self->_parent->flatten; |
fc436d2e |
13 | my $max = $self->_max_entries||0; |
2a19b2a6 |
14 | $max && @sorted > $max ? @sorted[0..$max-1] : @sorted; |
ebd4c292 |
15 | } |
16 | |
17 | sub map { |
18 | my ($self, $mapper) = @_; |
19 | [ map $mapper->($_), $self->flatten ] |
20 | } |
21 | |
22 | 1; |