summaryrefslogtreecommitdiff
path: root/lib/WebCoso.pm
blob: 46db3c04d6f33fec03b94d78e1ee01284751f8c4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# -*- mode: perl6 -*- 
use File::Temp;
use WebCoso::Doc::Page;
use WebCoso::Doc::Feed;
 
class WebCoso {
    has $.srcdir;
    has $.destdir;
    has $!tmpdir = tempdir.IO;
    has @!docs;
 
    method get-files($dir,$basename,$ext) {
        gather {
            for $.srcdir,$!tmpdir -> $base {
                my @files = try {
                    CATCH {
                        when X::IO { }
                    }
                    $base.child($dir).dir(
                        test => /$basename \. .+? \. $ext/,
                    );
                // ();
                take $_ for map {
                    (.basename ~~ /$basename \. (.+?) \. $ext/)[0]
                    =>
                    $_
                }, @files;
            }
        }
    }
 
    method put-file($dir,$basename,$lang,$ext,$contents) {
        $!tmpdir.child($dir).child("{$basename}.{$lang}.{$ext}").spurt($contents);
        return;
    }
 
    method new-doc(:$dir) {
        @!docs.push(WebCoso::Doc::Page.new(:$dir,wc=>self));
    }
    method new-feed(:$dir) {
        @!docs.push(WebCoso::Doc::Feed.new(:$dir,wc=>self));
    }
    method run() {
        .make() for @!docs;
    }
}