From 0ad9cce431eaeaec220c75d240d9338b3c05d947 Mon Sep 17 00:00:00 2001 From: dakkar Date: Sat, 5 Sep 2015 17:10:13 +0100 Subject: random flailing for deps I'm really confused! --- lib/WebCoso.pm | 50 +++++++++++++++++++++++++++++--------------------- t/tests/maker.t | 2 +- t/tests/page.t | 4 ++-- t/tests/webcoso.t | 11 +++-------- 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', ); -- cgit v1.2.3