From 99f8ccd6cddc6fa9a021d4118e6a706a19e474b1 Mon Sep 17 00:00:00 2001 From: dakkar Date: Thu, 10 Sep 2015 15:46:11 +0100 Subject: maybe I got deps working I'd still like to make the whole thing more readable, though --- lib/WebCoso.pm | 30 +++++++++++++++++++++++++----- 1 file changed, 25 insertions(+), 5 deletions(-) (limited to 'lib/WebCoso.pm') diff --git a/lib/WebCoso.pm b/lib/WebCoso.pm index a990b67..dbbfda4 100644 --- a/lib/WebCoso.pm +++ b/lib/WebCoso.pm @@ -1,5 +1,7 @@ # -*- mode: perl6 -*- use File::Temp; +use JSON::Fast; +use WebCoso::File; use WebCoso::Doc::Page; use WebCoso::Doc::Feed; @@ -9,6 +11,20 @@ class WebCoso { has $!tmpdir = tempdir.IO; has %!docs; + 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; + } + + method save-deps($dir,$basename,$ext,%new-deps is copy) { + my %deps = try { from-json($.srcdir.child('deps.json').IO.slurp) } // {}; + %new-deps.values».=path; + %deps{$basename}{$ext} = %new-deps; + $.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 { @@ -24,13 +40,17 @@ class WebCoso { say "WebCoso($.srcdir,$.destdir,$!tmpdir)::get-src-files($dir,$basename,$ext) files = {@files.perl}"; return ( map { - (.basename ~~ /$basename \. (.+?) \. $ext/)[0] - => - $_ + my $lang = (.basename ~~ /$basename \. (.+?) \. $ext/)[0].Str; + $lang => WebCoso::File.new(:$lang,path=>$_) }, @files ).values; } + method get-file($dir,$path) { + say "WebCoso($.srcdir,$.destdir,$!tmpdir)::get-file($dir,$path)"; + return WebCoso::File.new($.srcdir.child($dir).child($path)); + } + method get-made-files($dir,$basename,$ext) { say "WebCoso($.srcdir,$.destdir,$!tmpdir)::get-made-files($dir,$basename,$ext)"; if %!docs{$dir}{$basename} -> $doc { @@ -51,8 +71,8 @@ class WebCoso { say "WebCoso($.srcdir,$.destdir,$!tmpdir)::put-file($dir,$basename,$lang,$ext)"; my $t = ($dir ?? $!tmpdir.child($dir) !! $!tmpdir); $t.mkdir; - my $f = $t.child("{$basename}.{$lang}.{$ext}"); - $f.spurt($contents); + my $f = WebCoso::File.new(:$lang,path=>$t.child("{$basename}.{$lang}.{$ext}")); + $f.contents($contents); return $f; } -- cgit v1.2.3