summaryrefslogtreecommitdiff
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
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!
-rw-r--r--lib/WebCoso.pm50
-rw-r--r--t/tests/maker.t2
-rw-r--r--t/tests/page.t4
-rw-r--r--t/tests/webcoso.t11
4 files changed, 35 insertions, 32 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
}
}
diff --git a/t/tests/maker.t b/t/tests/maker.t
index 38fbfd8..25823a6 100644
--- a/t/tests/maker.t
+++ b/t/tests/maker.t
@@ -18,7 +18,7 @@ $srcdir.child('document.en.tt').spurt('en');
my $wc = WebCoso.new(:$srcdir,:$destdir);
-my $m = WebCoso::Maker::TT.new(basename=>'document',dir=>Nil,:$wc);
+my $m = WebCoso::Maker::TT.new(basename=>'document',dir=>'',:$wc);
my %output = $m.get-files();
diff --git a/t/tests/page.t b/t/tests/page.t
index e42e738..939c404 100644
--- a/t/tests/page.t
+++ b/t/tests/page.t
@@ -16,10 +16,10 @@ $srcdir.child('document.it.tt').spurt('it');
$srcdir.child('document.en.rest.txt').spurt('en');
my $wc = WebCoso.new(:$srcdir,:$destdir);
-$wc.new-page(Nil);
+$wc.new-page('');
$wc.run();
-my %output = $wc.get-files(Nil,'document','html');
+my %output = $wc.get-files('','document','html');
dd %output;
cmp-files(
diff --git a/t/tests/webcoso.t b/t/tests/webcoso.t
index 6676ded..49e28ee 100644
--- a/t/tests/webcoso.t
+++ b/t/tests/webcoso.t
@@ -33,15 +33,10 @@ subtest {
}, 'getting files';
subtest {
- $wc.put-file('two','document','en','txt',
- 'something');
- my %two = $wc.get-files('two','document','txt');
+ my $put = $wc.put-file('two','document','en','txt',
+ 'something');
- cmp-files(
- %two,
- {
- en => { $^f.abspath ~~ /two\/document\.en\.txt$/ },
- },
+ ok($put.abspath ~~ /two\/document\.en\.txt$/,
'put-file works',
);