summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authordakkar <dakkar@thenautilus.net>2015-09-05 17:10:13 +0100
committerdakkar <dakkar@thenautilus.net>2015-09-05 17:10:13 +0100
commit0ad9cce431eaeaec220c75d240d9338b3c05d947 (patch)
treecf39a20c7c387f07d432250e8af382c48c0b2854 /lib
parentdeps test fails (diff)
downloadWebCoso-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')
-rw-r--r--lib/WebCoso.pm50
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
}
}