aboutsummaryrefslogtreecommitdiff
path: root/stest.pl
diff options
context:
space:
mode:
Diffstat (limited to 'stest.pl')
-rw-r--r--stest.pl39
1 files changed, 27 insertions, 12 deletions
diff --git a/stest.pl b/stest.pl
index fc87b8b..69f3918 100644
--- a/stest.pl
+++ b/stest.pl
@@ -14,7 +14,14 @@ use XML::LibXSLT;
use YAML::Syck;
my $stash={};
-my $template=Template->new();
+my $template_provider=Template::Provider->new({
+ INCLUDE_PATH=> 'common/',
+ ABSOLUTE=>1,
+ RELATIVE=>1,
+});
+my $template=Template->new({
+ LOAD_TEMPLATES=>[$template_provider],
+});
my $rest=Text::Restructured->new({},'WebCoso');
my $xml_parser=XML::LibXML->new();
my $xslt_proc=XML::LibXSLT->new();
@@ -54,15 +61,18 @@ sub expandTT {
if (@$deps>1) {
$vars->{tagged}=$fc->get($deps->[0]);
}
+ push @{$template_provider->include_path},
+ file($deps->[-1])->parent;
$fc->put($target,
$template->context->process($tmpl,
$vars));
+ pop @{$template_provider->include_path};
}
sub parseRST {
my ($maker,$target,$deps,$matches)=@_;
- $fc->put($target,$fc->get($deps->[0]));
+ $fc->put($target,$fc->get($deps->[-1]));
}
sub du2html {
@@ -87,10 +97,11 @@ sub getTags {
my %tagged;
for my $doc_name (@$deps) {
my $doc=$fc->get($doc_name);
- my @tags=map {$_->textContext}
- $xpath->find(
+ my @tags=map {$_->textContent}
+ $xpath->findnodes(
q{/document/docinfo/field[field_name='tags']/field_body/*/list_item},
$doc);
+ chomp for @tags;
push @{$tagged{$_}},$doc_name for @tags;
}
$fc->put($target,\%tagged);
@@ -160,18 +171,22 @@ sub keepEarliest {
return @ret;
}
-my %files=(files=>sub{m{^document\.}});
+my %files=(files=>sub{m{^document\.} and ($File::Next::dir !~ m{/\.svn/})});
my $maker=Slay::Maker->new({
rules => [
['src/(**)/document.(*).rest.txt',':',ifExists('src/$1/document.$2.rest.tt'),'=',\&expandTT],
['src/(**)/document.(*).du.xml',':',ifExists('src/$1/document.$2.rest.txt'),'=',\&parseRST],
- ['deps/tags.xml',':',fromTo('src/',{%files,transform=>sub{my $s=shift;$s=~s{\.[^.]+\.[^.]+$}{.du.xml};$s}}),'=',\&getTags],
+ ['src/()document.(*).rest.txt',':',ifExists('src/document.$2.rest.tt'),'=',\&expandTT],
+ ['src/()document.(*).du.xml',':',ifExists('src/document.$2.rest.txt'),'=',\&parseRST],
+ ['deps/tags.yml',':',fromTo('src/',{%files,transform=>sub{my $s=shift;$s=~s{\.[^.]+\.[^.]+$}{.du.xml};$s}}),'=',\&getTags],
#['deps/changes.xml',':',keepEarliest(fromTo('src/',{%files})),'=',\&getChanges],
['tags/(**)/document.(*).rest.txt',':','deps/tags.yml',ifExists('tags/$1/document.$2.rest.tt'),'=',\&expandTT],
['tags/(**)/document.(*).du.xml',':','deps/tags.yml',ifExists('tags/$1/document.$2.rest.txt'),'=',\&parseRST],
- ['dst/(**)/document.(*).xhtml',':','deps/tags.yml','deps/changes.xml',ifExists('src/$1/document.$2.du.xml'),ifExists('tags/$1/document.$2.du.xml'),'=',\&du2html],
+ ['dtags/(**)/document.(*).html',':','deps/tags.yml','tags/$1/document.$2.du.xml','=',\&du2html],
+ ['dst/(**)/document.(*).html',':','deps/tags.yml','src/$1/document.$2.du.xml','=',\&du2html],
+ ['dst/()document.(*).html',':','deps/tags.yml','src/document.$2.du.xml','=',\&du2html],
],
options => {
auto_create_dirs => 1,
@@ -181,12 +196,12 @@ my $maker=Slay::Maker->new({
},
});
-my @targets=fromTo('src/',
+my @targets=(fromTo('src/',
{
%files,
transform=>sub{
my $src=shift;
- $src=~s{\.[^.]+\.[^.]+$}{.xhtml};
+ $src=~s{\.[^.]+\.[^.]+$}{.html};
$src=~s{^src/}{dst/};
return $src;
},
@@ -196,11 +211,11 @@ my @targets=fromTo('src/',
%files,
transform=>sub{
my $src=shift;
- $src=~s{\.[^.]+\.[^.]+$}{.xhtml};
- $src=~s{^tags/}{dst/};
+ $src=~s{\.[^.]+\.[^.]+$}{.html};
+ $src=~s{^tags/}{dtags/};
return $src;
},
- });
+ }));
print "targets: @targets\n";
$maker->make(@targets);