aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/WebCoso/Common.pm3
-rw-r--r--lib/WebCoso/Maker.pm10
-rw-r--r--lib/WebCoso/XSLT.pm29
3 files changed, 38 insertions, 4 deletions
diff --git a/lib/WebCoso/Common.pm b/lib/WebCoso/Common.pm
index 0d291a8..7b610f2 100644
--- a/lib/WebCoso/Common.pm
+++ b/lib/WebCoso/Common.pm
@@ -213,5 +213,8 @@ sub keepEarliest {
our %docfiles=(
files=>sub{m{^document\.}},
dirs=>sub{!m{^(tags$|_|\.)}});
+our %feedfiles=(
+ files=>sub{m{^feed\.[.]+\.tt$}},
+ dirs=>sub{!m{^[^_.]}});
1;
diff --git a/lib/WebCoso/Maker.pm b/lib/WebCoso/Maker.pm
index c4659be..e8943be 100644
--- a/lib/WebCoso/Maker.pm
+++ b/lib/WebCoso/Maker.pm
@@ -160,6 +160,11 @@ my @passes=(
%WebCoso::Common::docfiles,
transform=>sub{WebCoso::Common::typedAs($_[0],'du.xml')},
}),
+ WebCoso::Common::fromTo("$WebCoso::Common::SRCPATH/",
+ {
+ %WebCoso::Common::feedfiles,
+ transform=>sub{WebCoso::Common::typedAs($_[0],'.xml')},
+ }),
"$WebCoso::Common::SRCPATH/_webcoso/tags.yml",
"$WebCoso::Common::SRCPATH/_webcoso/changes.yml",
]},
@@ -228,10 +233,9 @@ my @passes=(
}),
WebCoso::Common::fromTo("$WebCoso::Common::SRCPATH/",
{
- files=>sub{m{^feed\.}},
- dirs=>sub{!m{^[_.]}},
+ %WebCoso::Common::feedfiles,
transform=>sub{
- (my $file=$_[0]
+ (my $file=$_[0])
=~s{^\Q$WebCoso::Common::SRCPATH\E/}{$WebCoso::Common::DSTPATH/};
return $file;
},
diff --git a/lib/WebCoso/XSLT.pm b/lib/WebCoso/XSLT.pm
index 70efc62..c47377a 100644
--- a/lib/WebCoso/XSLT.pm
+++ b/lib/WebCoso/XSLT.pm
@@ -43,7 +43,29 @@ sub new {
my $xslt=file($deps->[-1])->parent->file('du2html.xsl');
$xslt=$self->{fc}->get($xslt);
if (@$deps>1) {
- INFO("xml tagging as $deps->[0]");
+ INFO("xml tag source from as $deps->[0]");
+ $self->setXMLTagsSource($self->{fc}->get($deps->[0]));
+ } else {
+ $self->setXMLTagsSource(undef);
+ }
+ my $out=$xslt->transform($du,
+ XML::LibXSLT::xpath_to_string(
+ path => $matches->[0],
+ language => $matches->[1],
+ filename => $deps->[-1],
+ ));
+ $self->{fc}->put($target,$xslt->output_string($out));
+ };
+
+ $self->{fillFeed}=sub {
+ my ($maker,$target,$deps,$matches)=@_;
+ DEBUG("fillFeed($maker,$target,(@$deps),(@$matches))");
+
+ my $du=$self->{fc}->get($deps->[-1]);
+ my $xslt=file($deps->[-1])->parent->file('fillFeed.xsl');
+ $xslt=$self->{fc}->get($xslt);
+ if (@$deps>1) {
+ INFO("xml tag source from $deps->[0]");
$self->setXMLTagsSource($self->{fc}->get($deps->[0]));
} else {
$self->setXMLTagsSource(undef);
@@ -65,6 +87,11 @@ sub du2html {
return $self->{du2html};
}
+sub fillFeed {
+ my ($self)=@_;
+ return $self->{fillFeed};
+}
+
sub setXMLTagsSource {
my ($self,$source)=@_;
$self->{tags_source}=$source;