summaryrefslogtreecommitdiff
path: root/lib/WebCoso.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/WebCoso.pm')
-rw-r--r--lib/WebCoso.pm40
1 files changed, 16 insertions, 24 deletions
diff --git a/lib/WebCoso.pm b/lib/WebCoso.pm
index dbbfda4..d734bd8 100644
--- a/lib/WebCoso.pm
+++ b/lib/WebCoso.pm
@@ -2,6 +2,7 @@
use File::Temp;
use JSON::Fast;
use WebCoso::File;
+use WebCoso::FileSet;
use WebCoso::Doc::Page;
use WebCoso::Doc::Feed;
@@ -13,37 +14,28 @@ class WebCoso {
method load-deps($dir,$basename,$ext) {
my %deps = try { from-json($.srcdir.child('deps.json').IO.slurp) } // {};
- my $ret = %deps{$basename}{$ext} // {};
- for $ret.values -> $f is rw { $f = WebCoso::File.new($f) };
- return $ret;
+ my %ret = %deps{$dir}{$basename}{$ext} // {};
+ return WebCoso::FileSet.new(files-hash=>%ret);
}
- method save-deps($dir,$basename,$ext,%new-deps is copy) {
+ method save-deps($dir,$basename,$ext,$new-deps) {
my %deps = try { from-json($.srcdir.child('deps.json').IO.slurp) } // {};
- %new-deps.values».=path;
- %deps{$basename}{$ext} = %new-deps;
+ %deps{$dir}{$basename}{$ext} = $new-deps.export-hash;
$.srcdir.child('deps.json').IO.spurt(to-json(%deps));
}
method get-src-files($dir,$basename,$ext) {
say "WebCoso($.srcdir,$.destdir,$!tmpdir)::get-src-files($dir,$basename,$ext)";
- my @files = gather {
+ my @filesets = (gather {
for $.srcdir,$!tmpdir -> $base {
- take $_ for try {
- CATCH { when X::IO { } }
- ( $dir ?? $base.child($dir) !! $base ).dir(
- test => /$basename \. .+? \. $ext/,
- )
- } // ();
+ take WebCoso::FileSet.new(
+ path => ( $dir ?? $base.child($dir) !! $base ),
+ :$basename, :$ext,
+ );
}
- }
- say "WebCoso($.srcdir,$.destdir,$!tmpdir)::get-src-files($dir,$basename,$ext) files = {@files.perl}";
- return (
- map {
- my $lang = (.basename ~~ /$basename \. (.+?) \. $ext/)[0].Str;
- $lang => WebCoso::File.new(:$lang,path=>$_)
- }, @files
- ).values;
+ }).values;
+ say "WebCoso($.srcdir,$.destdir,$!tmpdir)::get-src-files($dir,$basename,$ext) files = {@filesets».files}";
+ return @filesets.reduce({$^a.merged-with($^b)});
}
method get-file($dir,$path) {
@@ -62,9 +54,9 @@ class WebCoso {
method get-files($dir,$basename,$ext,:$make=True) {
say "WebCoso($.srcdir,$.destdir,$!tmpdir)::get-files($dir,$basename,$ext,$make)";
- my %src = self.get-src-files($dir,$basename,$ext);
- my %made = ( $make ?? self.get-made-files($dir,$basename,$ext) !! () );
- return flat %src,%made;
+ my $src = self.get-src-files($dir,$basename,$ext);
+ my $made = ( $make ?? self.get-made-files($dir,$basename,$ext) !! () );
+ return $src.merged-with($made);
}
method put-file($dir,$basename,$lang,$ext,$contents) {