diff options
Diffstat (limited to 'stest.pl')
-rw-r--r-- | stest.pl | 34 |
1 files changed, 31 insertions, 3 deletions
@@ -43,6 +43,8 @@ my $template=Template->new({ my $rest=Text::Restructured->new({},'WebCoso'); my $xml_parser=XML::LibXML->new(); my $xslt_proc=XML::LibXSLT->new(); +my $xpath=XML::LibXML::XPathContext->new(); +$xpath->registerNs('x', 'http://www.w3.org/1999/xhtml'); my $fc=File::Cache::Parsed->new(follow=>1); $fc->add_parser(qr{\.tt2?$} => @@ -76,6 +78,34 @@ sub dstUriFor { return $name; } +sub getTitleFor { + my ($lang,$path,$name)=@_; + + my $doc_name=$name; + $doc_name=~s{\.html$}{.du.xml}; + $doc_name=~s{/$}{/document.$lang.du.xml}; + if ($doc_name=~m{^\Q$DSTBASEURL\E}) { + $doc_name=~s{^\Q$DSTBASEURL\E}{$SRCPATH/}; + } + else { + $doc_name="$SRCPATH/$doc_name"; + } + #$doc_name=file($doc_name)->absolute(file($path)->parent); # absolutize it + warn "getTitleFor($lang,$path,$name)->$doc_name\n"; + + my $doc=$fc->get($doc_name); + unless ($doc) { + warn "No document for <$doc_name>, returning <$name>\n"; + return $name; + } + my $title=$xpath->findnodes( + q{/document/title}, + $doc); + return $title; +} + +$xslt_proc->register_function('http://webcoso.thenautilus.net/','title-for',\&getTitleFor); + sub isLang { my ($lang,$name)=@_; warn "isLang($lang,$name)\n"; @@ -125,12 +155,11 @@ sub du2html { XML::LibXSLT::xpath_to_string( path => $matches->[0], language => $matches->[1], + filename => $deps->[-1], )); $fc->put($target,$xslt->output_string($out)); } -{my $xpath=XML::LibXML::XPathContext->new(); -$xpath->registerNs('x', 'http://www.w3.org/1999/xhtml'); sub getTags { my ($maker,$target,$deps,$matches)=@_; @@ -146,7 +175,6 @@ sub getTags { } $fc->put($target,\%tagged); } -} sub getChanges { my ($maker,$target,$deps,$matches)=@_; |