Catalyst Introducing Catalyst #13

More Page code

has 'revisions' => (
    metaclass  => 'Collection::Array',
    is         => 'ro',
    isa        => 'ArrayRef[Str]',
    required   => 0,
    default    => sub { shift->_versions },
    lazy       => 1,
    auto_deref => 1,
    provides   => {
        unshift => '_unshift_revision',

    },
);

sub _versions {
    my $self = shift;
    my $dir = $self->storage;
    opendir my $dh, $dir->stringify;
    my @files = readdir $dh;
    closedir $dh;

    return [
        sort { _revision_sorter($a, $b) } 
          map { $_->basename } 
            grep { -f }
              map { $dir->file($_) } @files
    ];
}
""