make sure maven.faq.src exists git-svn-id: https://svn.apache.org/repos/asf/maven/maven-1/plugins/trunk@115458 13f79535-47bb-0310-9956-ffa450edef68
188 lines
6.7 KiB
XML
188 lines
6.7 KiB
XML
<?xml version="1.0"?>
|
|
|
|
<!--
|
|
/*
|
|
* Copyright 2001-2004 The Apache Software Foundation.
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
-->
|
|
|
|
<project
|
|
xmlns:j="jelly:core"
|
|
xmlns:util="jelly:util"
|
|
xmlns:x="jelly:xml"
|
|
xmlns:ant="jelly:ant"
|
|
xmlns:define="jelly:define"
|
|
xmlns:doc="doc"
|
|
xmlns:faq="faq">
|
|
|
|
<define:taglib uri="faq">
|
|
|
|
<!--
|
|
Transforms *.fml files into *.xml xdoc files.
|
|
parameters:
|
|
srcdir: directory where to find *.fml files under
|
|
destdir: directory where to produce output xdoc xml files
|
|
-->
|
|
<define:tag name="performTransformation">
|
|
<!-- NOTE: part of this tag implementation is based on jelly-code from xdoc-plugin -->
|
|
<util:available file="${srcdir}">
|
|
<util:file var="srcdirFile" name="${srcdir}"/>
|
|
<j:set var="srcdir" value="${srcdirFile.getCanonicalPath()}"/>
|
|
<util:file var="destdirFile" name="${destdir}"/>
|
|
<j:set var="destdir" value="${destdirFile.getCanonicalPath()}"/>
|
|
|
|
<!-- construct a mapper, which is to help map input files to output path -->
|
|
<util:replace var="fromPattern" oldChar="\" newChar="/" value="${srcdir}/*.fml"/>
|
|
<util:replace var="toPattern" oldChar="\" newChar="/" value="${destdir}/*.xml"/>
|
|
<j:if test="${mapper == null}">
|
|
<j:new var="mapper" className="org.apache.maven.util.CaseInsensitiveGlobPatternMapper"/>
|
|
</j:if>
|
|
<j:setProperties object="${mapper}" from="${fromPattern}" to="${toPattern}"/>
|
|
|
|
<!-- construct a mapper, which is to help map input dirs to output dirs (so we can create output paths) -->
|
|
<util:replace var="fromDirPattern" oldChar="\" newChar="/" value="${srcdir}*"/>
|
|
<util:replace var="toDirPattern" oldChar="\" newChar="/" value="${destdir}*"/>
|
|
<j:new var="dirMapper" className="org.apache.maven.util.CaseInsensitiveGlobPatternMapper"/>
|
|
<j:setProperties object="${dirMapper}" from="${fromDirPattern}" to="${toDirPattern}"/>
|
|
|
|
<!-- scan for all .fml faq source files -->
|
|
<ant:fileScanner var="faqFilenames">
|
|
<ant:fileset dir="${srcdir}">
|
|
<ant:patternset>
|
|
<ant:include name="**/*.fml"/>
|
|
</ant:patternset>
|
|
</ant:fileset>
|
|
</ant:fileScanner>
|
|
|
|
<j:set var="outputencoding" value="${maven.docs.outputencoding}"/>
|
|
|
|
<!-- loop each found .fml file and produce output .xml xdocs file -->
|
|
<j:forEach var="faqFile" items="${faqFilenames.iterator()}">
|
|
<!-- first, create the relative output-dir into the destdir -->
|
|
<!-- e.g.: if source file is "xdocs/faqs/foofaq.fml" we need to create "target/generated-xdocs/faqs" -->
|
|
<util:replace var="inDirForward" oldChar="\" newChar="/" value="${faqFile.parent}"/>
|
|
<j:set var="outDir" value="${dirMapper.mapFileName(inDirForward).0}"/>
|
|
<mkdir dir="${outDir}"/>
|
|
|
|
<!-- generate output file name -->
|
|
<util:replace var="outFileForward" oldChar="\" newChar="/" value="${faqFile.toString()}"/>
|
|
<j:set var="outFile" value="${mapper.mapFileName(outFileForward).0}"/>
|
|
|
|
<echo>Generating ${outFile} from ${faqFile}</echo>
|
|
|
|
<!-- xml-parse .fml faq file -->
|
|
<x:parse var="doc" xml="${faqFile}"/>
|
|
<x:set var="root" select="$doc/*"/>
|
|
|
|
<!-- produce a output xdoc xml file from parsed .fml source -->
|
|
<j:file name="${outFile}" encoding="${outputencoding}" outputMode="xml" escapeText="true">
|
|
<document>
|
|
|
|
<properties>
|
|
<x:element name="title"><x:expr select="$root/@title"/></x:element>
|
|
</properties>
|
|
<body>
|
|
<x:element name="section">
|
|
<x:attribute name="name"><x:expr select="$root/@title"/></x:attribute>
|
|
|
|
<x:forEach select="$root/part">
|
|
<p>
|
|
<strong><x:expr select="title"/></strong>
|
|
</p>
|
|
<ol>
|
|
<x:forEach select="faq">
|
|
<li>
|
|
<x:element name="a">
|
|
<j:set var="_id"><x:expr select="@id"/></j:set>
|
|
<x:attribute name="href">#<doc:escapeNameToken value="${_id}"/></x:attribute>
|
|
<x:copyOf select="question/node()"/>
|
|
</x:element>
|
|
</li>
|
|
</x:forEach>
|
|
</ol>
|
|
</x:forEach>
|
|
</x:element>
|
|
|
|
<x:forEach select="$root/part">
|
|
<x:element name="section">
|
|
<x:attribute name="name"><x:expr select="title"/></x:attribute>
|
|
|
|
<x:forEach select="faq">
|
|
<dl>
|
|
<dt>
|
|
<x:element name="a">
|
|
<j:set var="_id"><x:expr select="@id"/></j:set>
|
|
<x:attribute name="name"><doc:escapeNameToken value="${_id}"/></x:attribute>
|
|
<x:copyOf select="question/node()"/>
|
|
</x:element>
|
|
</dt>
|
|
<dd>
|
|
<x:copyOf select="answer/node()"/>
|
|
</dd>
|
|
</dl>
|
|
</x:forEach>
|
|
</x:element>
|
|
</x:forEach>
|
|
</body>
|
|
</document>
|
|
</j:file>
|
|
</j:forEach>
|
|
</util:available>
|
|
</define:tag>
|
|
|
|
</define:taglib>
|
|
|
|
<goal name="faq:init">
|
|
|
|
<mkdir dir="${maven.faq.src}" />
|
|
<fileScanner var="fmlFiles">
|
|
<fileset dir="${maven.faq.src}" includes="**/*.fml"/>
|
|
</fileScanner>
|
|
|
|
</goal>
|
|
|
|
<goal name="maven-faq-plugin:register" prereqs="faq:init">
|
|
|
|
<!-- Only register the faq report if there are some fml files in
|
|
the project -->
|
|
<j:if test="${fmlFiles.iterator().hasNext()}">
|
|
<doc:registerReport
|
|
name="FAQs"
|
|
pluginName="maven-faq-plugin"
|
|
description="Frequently Asked Questions."
|
|
link="faq"/>
|
|
</j:if>
|
|
|
|
</goal>
|
|
|
|
<goal name="maven-faq-plugin:deregister" prereqs="faq:init">
|
|
<!-- Only deregister the faq report if there are some fml files in
|
|
the project -->
|
|
<j:if test="${fmlFiles.iterator().hasNext()}">
|
|
<doc:deregisterReport name="FAQs"/>
|
|
</j:if>
|
|
</goal>
|
|
|
|
<goal name="maven-faq-plugin:report"
|
|
description="Generate FAQs">
|
|
<attainGoal name="faq"/>
|
|
</goal>
|
|
|
|
<goal name="faq" description="Generates FAQ xdoc files from FAQ XML documents">
|
|
<faq:performTransformation srcdir="${maven.faq.src}" destdir="${maven.faq.dest}" />
|
|
</goal>
|
|
|
|
</project>
|