use JSON;
use Moo;
+with 'SCSite::PageChildren';
+
{
my $j = JSON->new;
sub _json { $j }
->catdir(File::Spec->abs2rel($self->base_dir->name, $self->top_dir->name))
}
+sub _page_set_class { ref($_[0]) }
+sub _top_dir { shift->top_dir }
+sub _my_path { shift->base_dir }
+
sub get {
my ($self, $spec) = @_;
$spec->{path} or die "path is required to get";
sub flatten {
my ($self) = @_;
- return unless (my $base = $self->base_dir)->exists;
- my %seen;
my $slash = io->dir('/');
- my $min = $self->min_depth;
map {
my ($path, $type) = $_->name =~ /^(.*)${\$self->_types_re}$/;
$self->_inflate(
$slash->catdir(File::Spec->abs2rel($path, $self->top_dir->name)),
$_
);
- } map {
+ } $self->_all_files;
+}
+
+sub all_paths {
+ my ($self) = @_;
+ my $slash = io->dir('/');
+ map {
+ my ($path, $type) = $_->name =~ /^(.*)${\$self->_types_re}$/;
+ $slash->catdir(File::Spec->abs2rel($path, $self->top_dir->name))->name,
+ } $self->_all_files;
+}
+
+sub _all_files {
+ my ($self) = @_;
+ return unless (my $base = $self->base_dir)->exists;
+ my %seen;
+ my $min = $self->min_depth;
+ map {
$_->filter(sub { $_->filename =~ /${\$self->_types_re}$/ })
->all_files($self->max_depth - ($min-1))
} map