diff options
author | dakkar <dakkar@thenautilus.net> | 2015-09-05 17:10:13 +0100 |
---|---|---|
committer | dakkar <dakkar@thenautilus.net> | 2015-09-05 17:10:13 +0100 |
commit | 0ad9cce431eaeaec220c75d240d9338b3c05d947 (patch) | |
tree | cf39a20c7c387f07d432250e8af382c48c0b2854 /lib/WebCoso.pm | |
parent | deps test fails (diff) | |
download | WebCoso-p6-0ad9cce431eaeaec220c75d240d9338b3c05d947.tar.gz WebCoso-p6-0ad9cce431eaeaec220c75d240d9338b3c05d947.tar.bz2 WebCoso-p6-0ad9cce431eaeaec220c75d240d9338b3c05d947.zip |
random flailing for deps
I'm really confused!
Diffstat (limited to 'lib/WebCoso.pm')
-rw-r--r-- | lib/WebCoso.pm | 50 |
1 files changed, 29 insertions, 21 deletions
diff --git a/lib/WebCoso.pm b/lib/WebCoso.pm index 37111b5..6e3da7e 100644 --- a/lib/WebCoso.pm +++ b/lib/WebCoso.pm @@ -7,26 +7,32 @@ class WebCoso { has $.srcdir; has $.destdir; has $!tmpdir = tempdir.IO; - has @!docs; + has %!docs; - method get-files($dir,$basename,$ext) { - gather { - for $.srcdir,$!tmpdir -> $base { - my @files = try { - CATCH { - when X::IO { } - } - ( $dir ?? $base.child($dir) !! $base ).dir( - test => /$basename \. .+? \. $ext/, - ); - } // (); - take $_ for map { - (.basename ~~ /$basename \. (.+?) \. $ext/)[0] - => - $_ - }, @files; - } + method get-src-files($dir,$basename,$ext) { + return try { + CATCH { when X::IO { } } + ( $dir ?? $.srcdir.child($dir) !! $.srcdir ).dir( + test => /$basename \. .+? \. $ext/, + ); + } // (); + } + + method get-made-files($dir,$basename,$ext) { + if %!docs{$dir}{$basename} -> $doc { + return $doc.get-files-by-ext($ext) } + return; + } + + method get-files($dir,$basename,$ext) { + my @files = self.get-src-files($dir,$basename,$ext) // self.get-made-files($dir,$basename,$ext); + + return map { + (.basename ~~ /$basename \. (.+?) \. $ext/)[0] + => + $_ + }, @files; } method put-file($dir,$basename,$lang,$ext,$contents) { @@ -38,12 +44,14 @@ class WebCoso { } method new-page($dir) { - @!docs.push(WebCoso::Doc::Page.new(:$dir,wc=>self)); + %!docs{$dir}{WebCoso::Doc::Page.basename} + = WebCoso::Doc::Page.new(:$dir,wc=>self); } method new-feed($dir) { - @!docs.push(WebCoso::Doc::Feed.new(:$dir,wc=>self)); + %!docs{$dir}{WebCoso::Doc::Feed.basename} + = WebCoso::Doc::Feed.new(:$dir,wc=>self); } method run() { - .make() for @!docs; + .make() for %!docs.values».values.flat } } |