You are viewing a plain text version of this content. The canonical link for it is here.
Posted to doxia-commits@maven.apache.org by lt...@apache.org on 2007/08/20 15:05:21 UTC
svn commit: r567679 - in
/maven/doxia/doxia/trunk/doxia-modules/doxia-module-docbook-simple/src:
main/java/org/apache/maven/doxia/module/docbook/
test/java/org/apache/maven/doxia/module/docbook/ test/resources/
Author: ltheussl
Date: Mon Aug 20 06:05:20 2007
New Revision: 567679
URL: http://svn.apache.org/viewvc?rev=567679&view=rev
Log:
Use new test classes. Minor fixes to parser (some elements were not properly closed). Javadocs.
Added:
maven/doxia/doxia/trunk/doxia-modules/doxia-module-docbook-simple/src/test/java/org/apache/maven/doxia/module/docbook/DocBookIdentityTest.java (with props)
maven/doxia/doxia/trunk/doxia-modules/doxia-module-docbook-simple/src/test/resources/test.xml
- copied unchanged from r567313, maven/doxia/doxia/trunk/doxia-modules/doxia-module-docbook-simple/src/test/resources/guide.xml
Removed:
maven/doxia/doxia/trunk/doxia-modules/doxia-module-docbook-simple/src/test/resources/guide.xml
Modified:
maven/doxia/doxia/trunk/doxia-modules/doxia-module-docbook-simple/src/main/java/org/apache/maven/doxia/module/docbook/DocBookParser.java
maven/doxia/doxia/trunk/doxia-modules/doxia-module-docbook-simple/src/main/java/org/apache/maven/doxia/module/docbook/DocBookSink.java
maven/doxia/doxia/trunk/doxia-modules/doxia-module-docbook-simple/src/test/java/org/apache/maven/doxia/module/docbook/DocBookParserTest.java
maven/doxia/doxia/trunk/doxia-modules/doxia-module-docbook-simple/src/test/java/org/apache/maven/doxia/module/docbook/DocBookSinkTest.java
Modified: maven/doxia/doxia/trunk/doxia-modules/doxia-module-docbook-simple/src/main/java/org/apache/maven/doxia/module/docbook/DocBookParser.java
URL: http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-modules/doxia-module-docbook-simple/src/main/java/org/apache/maven/doxia/module/docbook/DocBookParser.java?rev=567679&r1=567678&r2=567679&view=diff
==============================================================================
--- maven/doxia/doxia/trunk/doxia-modules/doxia-module-docbook-simple/src/main/java/org/apache/maven/doxia/module/docbook/DocBookParser.java (original)
+++ maven/doxia/doxia/trunk/doxia-modules/doxia-module-docbook-simple/src/main/java/org/apache/maven/doxia/module/docbook/DocBookParser.java Mon Aug 20 06:05:20 2007
@@ -22,6 +22,7 @@
import org.apache.maven.doxia.macro.MacroExecutionException;
import org.apache.maven.doxia.parser.AbstractXmlParser;
import org.apache.maven.doxia.sink.Sink;
+
import org.codehaus.plexus.util.xml.pull.XmlPullParser;
import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
@@ -40,7 +41,7 @@
* @author <a href="mailto:jason@maven.org">Jason van Zyl</a>
* @version $Id$
* @since 1.0
- * @plexus.component role-hint="doc-book"
+ * @plexus.component role="org.apache.maven.doxia.parser.Parser" role-hint="doc-book"
*/
public class DocBookParser
extends AbstractXmlParser
@@ -49,7 +50,7 @@
/**
* Level counter for calculating the section level.
*/
- private int level = 0;
+ private int level = -1;
/**
* A selective stack of parent elements
@@ -65,99 +66,99 @@
* The list of DocBook elements that introduce a new level of
* hierarchy.
*/
- private static final Collection hierElements = new HashSet();
+ private static final Collection HIER_ELEMENTS = new HashSet();
/**
* The list of DocBook elements that will be rendered verbatim
*/
- private static final Collection verbatimElements = new HashSet();
+ private static final Collection VERBATIM_ELEMENTS = new HashSet();
/**
* The list of DocBook elements that will be rendered inline and bold
*/
- private static final Collection boldElements = new HashSet();
+ private static final Collection BOLD_ELEMENTS = new HashSet();
/**
* The list of DocBook elements that will be rendered inline and italic
*/
- private static final Collection italicElements = new HashSet();
+ private static final Collection ITALIC_ELEMENTS = new HashSet();
/**
* The list of DocBook elements that will be rendered inline and monospace
*/
- private static final Collection monospaceElements = new HashSet();
+ private static final Collection MONOSPACE_ELEMENTS = new HashSet();
static
{
- DocBookParser.hierElements.add( "set" );
- DocBookParser.hierElements.add( "book" );
- DocBookParser.hierElements.add( "part" );
- DocBookParser.hierElements.add( "chapter" );
- DocBookParser.hierElements.add( "section" );
- DocBookParser.hierElements.add( "sect1" );
- DocBookParser.hierElements.add( "sect2" );
- DocBookParser.hierElements.add( "sect3" );
- DocBookParser.hierElements.add( "sect4" );
- DocBookParser.hierElements.add( "sect5" );
- DocBookParser.hierElements.add( "article" );
- DocBookParser.hierElements.add( "preface" );
- DocBookParser.hierElements.add( "partintro" );
- DocBookParser.hierElements.add( "appendix" );
- DocBookParser.hierElements.add( "bibliography" );
- DocBookParser.hierElements.add( "reference" );
- DocBookParser.hierElements.add( "bibliography" );
- DocBookParser.hierElements.add( "bibliodiv" );
- DocBookParser.hierElements.add( "glossary" );
- DocBookParser.hierElements.add( "refentry" );
- DocBookParser.hierElements.add( "refnamediv" );
- DocBookParser.hierElements.add( "refsection" );
- DocBookParser.hierElements.add( "refsect1" );
- DocBookParser.hierElements.add( "refsect2" );
- DocBookParser.hierElements.add( "refsect3" );
-
- DocBookParser.verbatimElements.add( "programlisting" );
- DocBookParser.verbatimElements.add( "screen" );
- DocBookParser.verbatimElements.add( "literallayout" );
- DocBookParser.verbatimElements.add( "synopsis" );
-
- DocBookParser.boldElements.add( "command" );
- DocBookParser.boldElements.add( "keycap" );
- DocBookParser.boldElements.add( "shortcut" );
- DocBookParser.boldElements.add( "userinput" );
-
- DocBookParser.italicElements.add( "parameter" );
- DocBookParser.italicElements.add( "replaceable" );
- DocBookParser.italicElements.add( "medialabel" );
- DocBookParser.italicElements.add( "structfield" );
- DocBookParser.italicElements.add( "systemitem" );
- DocBookParser.italicElements.add( "citetitle" );
- DocBookParser.italicElements.add( "emphasis" );
- DocBookParser.italicElements.add( "foreignphrase" );
- DocBookParser.italicElements.add( "wordasword" );
-
- DocBookParser.monospaceElements.add( "classname" );
- DocBookParser.monospaceElements.add( "exceptionname" );
- DocBookParser.monospaceElements.add( "interfacename" );
- DocBookParser.monospaceElements.add( "methodname" );
- DocBookParser.monospaceElements.add( "computeroutput" );
- DocBookParser.monospaceElements.add( "constant" );
- DocBookParser.monospaceElements.add( "envar" );
- DocBookParser.monospaceElements.add( "function" );
- DocBookParser.monospaceElements.add( "parameter" );
- DocBookParser.monospaceElements.add( "replaceable" );
- DocBookParser.monospaceElements.add( "literal" );
- DocBookParser.monospaceElements.add( "code" );
- DocBookParser.monospaceElements.add( "option" );
- DocBookParser.monospaceElements.add( "prompt" );
- DocBookParser.monospaceElements.add( "structfield" );
- DocBookParser.monospaceElements.add( "systemitem" );
- DocBookParser.monospaceElements.add( "structfield" );
- DocBookParser.monospaceElements.add( "userinput" );
- DocBookParser.monospaceElements.add( "varname" );
- DocBookParser.monospaceElements.add( "sgmltag" );
- DocBookParser.monospaceElements.add( "tag" );//DocBook 5
- DocBookParser.monospaceElements.add( "uri" );
- DocBookParser.monospaceElements.add( "filename" );
+ DocBookParser.HIER_ELEMENTS.add( "set" );
+ DocBookParser.HIER_ELEMENTS.add( "book" );
+ DocBookParser.HIER_ELEMENTS.add( "part" );
+ DocBookParser.HIER_ELEMENTS.add( "chapter" );
+ DocBookParser.HIER_ELEMENTS.add( "section" );
+ DocBookParser.HIER_ELEMENTS.add( "sect1" );
+ DocBookParser.HIER_ELEMENTS.add( "sect2" );
+ DocBookParser.HIER_ELEMENTS.add( "sect3" );
+ DocBookParser.HIER_ELEMENTS.add( "sect4" );
+ DocBookParser.HIER_ELEMENTS.add( "sect5" );
+ DocBookParser.HIER_ELEMENTS.add( "article" );
+ DocBookParser.HIER_ELEMENTS.add( "preface" );
+ DocBookParser.HIER_ELEMENTS.add( "partintro" );
+ DocBookParser.HIER_ELEMENTS.add( "appendix" );
+ DocBookParser.HIER_ELEMENTS.add( "bibliography" );
+ DocBookParser.HIER_ELEMENTS.add( "reference" );
+ DocBookParser.HIER_ELEMENTS.add( "bibliography" );
+ DocBookParser.HIER_ELEMENTS.add( "bibliodiv" );
+ DocBookParser.HIER_ELEMENTS.add( "glossary" );
+ DocBookParser.HIER_ELEMENTS.add( "refentry" );
+ DocBookParser.HIER_ELEMENTS.add( "refnamediv" );
+ DocBookParser.HIER_ELEMENTS.add( "refsection" );
+ DocBookParser.HIER_ELEMENTS.add( "refsect1" );
+ DocBookParser.HIER_ELEMENTS.add( "refsect2" );
+ DocBookParser.HIER_ELEMENTS.add( "refsect3" );
+
+ DocBookParser.VERBATIM_ELEMENTS.add( "programlisting" );
+ DocBookParser.VERBATIM_ELEMENTS.add( "screen" );
+ DocBookParser.VERBATIM_ELEMENTS.add( "literallayout" );
+ DocBookParser.VERBATIM_ELEMENTS.add( "synopsis" );
+
+ DocBookParser.BOLD_ELEMENTS.add( "command" );
+ DocBookParser.BOLD_ELEMENTS.add( "keycap" );
+ DocBookParser.BOLD_ELEMENTS.add( "shortcut" );
+ DocBookParser.BOLD_ELEMENTS.add( "userinput" );
+
+ DocBookParser.ITALIC_ELEMENTS.add( "parameter" );
+ DocBookParser.ITALIC_ELEMENTS.add( "replaceable" );
+ DocBookParser.ITALIC_ELEMENTS.add( "medialabel" );
+ DocBookParser.ITALIC_ELEMENTS.add( "structfield" );
+ DocBookParser.ITALIC_ELEMENTS.add( "systemitem" );
+ DocBookParser.ITALIC_ELEMENTS.add( "citetitle" );
+ DocBookParser.ITALIC_ELEMENTS.add( "emphasis" );
+ DocBookParser.ITALIC_ELEMENTS.add( "foreignphrase" );
+ DocBookParser.ITALIC_ELEMENTS.add( "wordasword" );
+
+ DocBookParser.MONOSPACE_ELEMENTS.add( "classname" );
+ DocBookParser.MONOSPACE_ELEMENTS.add( "exceptionname" );
+ DocBookParser.MONOSPACE_ELEMENTS.add( "interfacename" );
+ DocBookParser.MONOSPACE_ELEMENTS.add( "methodname" );
+ DocBookParser.MONOSPACE_ELEMENTS.add( "computeroutput" );
+ DocBookParser.MONOSPACE_ELEMENTS.add( "constant" );
+ DocBookParser.MONOSPACE_ELEMENTS.add( "envar" );
+ DocBookParser.MONOSPACE_ELEMENTS.add( "function" );
+ DocBookParser.MONOSPACE_ELEMENTS.add( "parameter" );
+ DocBookParser.MONOSPACE_ELEMENTS.add( "replaceable" );
+ DocBookParser.MONOSPACE_ELEMENTS.add( "literal" );
+ DocBookParser.MONOSPACE_ELEMENTS.add( "code" );
+ DocBookParser.MONOSPACE_ELEMENTS.add( "option" );
+ DocBookParser.MONOSPACE_ELEMENTS.add( "prompt" );
+ DocBookParser.MONOSPACE_ELEMENTS.add( "structfield" );
+ DocBookParser.MONOSPACE_ELEMENTS.add( "systemitem" );
+ DocBookParser.MONOSPACE_ELEMENTS.add( "structfield" );
+ DocBookParser.MONOSPACE_ELEMENTS.add( "userinput" );
+ DocBookParser.MONOSPACE_ELEMENTS.add( "varname" );
+ DocBookParser.MONOSPACE_ELEMENTS.add( "sgmltag" );
+ DocBookParser.MONOSPACE_ELEMENTS.add( "tag" ); //DocBook 5
+ DocBookParser.MONOSPACE_ELEMENTS.add( "uri" );
+ DocBookParser.MONOSPACE_ELEMENTS.add( "filename" );
}
// ----------------------------------------------------------------------
@@ -190,41 +191,42 @@
if ( id != null )
{
sink.anchor( id );
+ sink.anchor_();
}
//If the element introduces a new level of hierarchy, raise the stack
- if ( hierElements.contains( parser.getName() ) )
+ if ( HIER_ELEMENTS.contains( parser.getName() ) )
{
//increase the nesting level
level++;
//if this is the root element, handle it as body
- if ( level == 1 )
+ if ( level == 0 )
{
sink.body();
}
- else if ( level == 2 )
+ else if ( level == Sink.SECTION_LEVEL_1 )
{
sink.section1();
}
- else if ( level == 3 )
+ else if ( level == Sink.SECTION_LEVEL_2 )
{
sink.section2();
}
- else if ( level == 4 )
+ else if ( level == Sink.SECTION_LEVEL_3 )
{
sink.section3();
}
- else if ( level == 5 )
+ else if ( level == Sink.SECTION_LEVEL_4 )
{
sink.section4();
}
- else if ( level == 6 )
+ else if ( level == Sink.SECTION_LEVEL_5 )
{
sink.section5();
}
}
//Match all *info-Elements for metainformation, but only consider the root element
- else if ( ( parser.getName().endsWith( INFO_TAG.toString() ) ) && ( level == 1 ) )
+ else if ( ( parser.getName().endsWith( INFO_TAG.toString() ) ) && ( level == 0 ) )
{
sink.head();
parent.push( parser.getName() );
@@ -338,7 +340,8 @@
{
sink.tableCaption();
}
- else if ( ( parser.getName().equals( PARA_TAG.toString() ) || parser.getName().equals( SIMPARA_TAG.toString() ) )
+ else if ( ( parser.getName().equals( PARA_TAG.toString() )
+ || parser.getName().equals( SIMPARA_TAG.toString() ) )
&& !isParent( FORMALPARA_TAG.toString() ) )
{
sink.paragraph();
@@ -352,32 +355,32 @@
{
sink.bold();
}
- else if ( DocBookParser.verbatimElements.contains( parser.getName() ) )
+ else if ( DocBookParser.VERBATIM_ELEMENTS.contains( parser.getName() ) )
{
sink.verbatim( true );
}
- else if ( DocBookParser.boldElements.contains( parser.getName() ) &&
- DocBookParser.monospaceElements.contains( parser.getName() ) )
+ else if ( DocBookParser.BOLD_ELEMENTS.contains( parser.getName() )
+ && DocBookParser.MONOSPACE_ELEMENTS.contains( parser.getName() ) )
{
sink.bold();
sink.monospaced();
}
- else if ( DocBookParser.italicElements.contains( parser.getName() ) &&
- DocBookParser.monospaceElements.contains( parser.getName() ) )
+ else if ( DocBookParser.ITALIC_ELEMENTS.contains( parser.getName() )
+ && DocBookParser.MONOSPACE_ELEMENTS.contains( parser.getName() ) )
{
sink.italic();
sink.monospaced();
}
- else if ( DocBookParser.boldElements.contains( parser.getName() ) )
+ else if ( DocBookParser.BOLD_ELEMENTS.contains( parser.getName() ) )
{
sink.bold();
}
- else if ( DocBookParser.italicElements.contains( parser.getName() ) )
+ else if ( DocBookParser.ITALIC_ELEMENTS.contains( parser.getName() ) )
{
sink.italic();
}
- else if ( DocBookParser.monospaceElements.contains( parser.getName() ) )
+ else if ( DocBookParser.MONOSPACE_ELEMENTS.contains( parser.getName() ) )
{
sink.monospaced();
}
@@ -394,27 +397,27 @@
{
sink.tableCaption();
}
- else if ( level == 1 )
+ else if ( level == 0 )
{
sink.title();
}
- else if ( level == 2 )
+ else if ( level == Sink.SECTION_LEVEL_1 )
{
sink.sectionTitle1();
}
- else if ( level == 3 )
+ else if ( level == Sink.SECTION_LEVEL_2 )
{
sink.sectionTitle2();
}
- else if ( level == 4 )
+ else if ( level == Sink.SECTION_LEVEL_3 )
{
sink.sectionTitle3();
}
- else if ( level == 5 )
+ else if ( level == Sink.SECTION_LEVEL_4 )
{
sink.sectionTitle4();
}
- else if ( level == 6 )
+ else if ( level == Sink.SECTION_LEVEL_5 )
{
sink.sectionTitle5();
}
@@ -457,7 +460,7 @@
if ( linkend != null )
{
sink.link( "#" + linkend );
- sink.text( "Link" );//TODO: determine text of link target
+ sink.text( "Link" ); //TODO: determine text of link target
sink.link_();
}
}
@@ -473,38 +476,38 @@
{
//If the element introduces a new level of hierarchy, lower the stack
- if ( hierElements.contains( parser.getName() ) )
+ if ( HIER_ELEMENTS.contains( parser.getName() ) )
{
- //increase the nesting level
- level--;
//if this is the root element, handle it as body
- if ( level == 1 )
+ if ( level == 0 )
{
sink.body_();
}
- else if ( level == 2 )
+ else if ( level == Sink.SECTION_LEVEL_1 )
{
sink.section1_();
}
- else if ( level == 3 )
+ else if ( level == Sink.SECTION_LEVEL_2 )
{
sink.section2_();
}
- else if ( level == 4 )
+ else if ( level == Sink.SECTION_LEVEL_3 )
{
sink.section3_();
}
- else if ( level == 5 )
+ else if ( level == Sink.SECTION_LEVEL_4 )
{
sink.section4_();
}
- else if ( level == 6 )
+ else if ( level == Sink.SECTION_LEVEL_5 )
{
sink.section5_();
}
+ //decrease the nesting level
+ level--;
}
//Match all *info-Elements for metainformation, but only consider the root element
- else if ( parser.getName().endsWith( INFO_TAG.toString() ) && level == 1 )
+ else if ( parser.getName().endsWith( INFO_TAG.toString() ) && level == 0 )
{
sink.head_();
parent.pop();
@@ -584,7 +587,8 @@
{
sink.tableCaption_();
}
- else if ( ( parser.getName().equals( PARA_TAG.toString() ) || parser.getName().equals( SIMPARA_TAG.toString() ) )
+ else if ( ( parser.getName().equals( PARA_TAG.toString() )
+ || parser.getName().equals( SIMPARA_TAG.toString() ) )
&& !isParent( FORMALPARA_TAG.toString() ) )
{
sink.paragraph_();
@@ -596,34 +600,34 @@
}
else if ( parser.getName().equals( Tag.TITLE.toString() ) && isParent( FORMALPARA_TAG.toString() ) )
{
- sink.text( ". " );//Inline Running head
+ sink.text( ". " ); //Inline Running head
sink.bold_();
}
- else if ( DocBookParser.verbatimElements.contains( parser.getName() ) )
+ else if ( DocBookParser.VERBATIM_ELEMENTS.contains( parser.getName() ) )
{
sink.verbatim_();
}
- else if ( DocBookParser.boldElements.contains( parser.getName() ) &&
- DocBookParser.monospaceElements.contains( parser.getName() ) )
+ else if ( DocBookParser.BOLD_ELEMENTS.contains( parser.getName() )
+ && DocBookParser.MONOSPACE_ELEMENTS.contains( parser.getName() ) )
{
sink.bold_();
sink.monospaced_();
}
- else if ( DocBookParser.italicElements.contains( parser.getName() ) &&
- DocBookParser.monospaceElements.contains( parser.getName() ) )
+ else if ( DocBookParser.ITALIC_ELEMENTS.contains( parser.getName() )
+ && DocBookParser.MONOSPACE_ELEMENTS.contains( parser.getName() ) )
{
sink.italic_();
sink.monospaced_();
}
- else if ( DocBookParser.boldElements.contains( parser.getName() ) )
+ else if ( DocBookParser.BOLD_ELEMENTS.contains( parser.getName() ) )
{
sink.bold_();
}
- else if ( DocBookParser.italicElements.contains( parser.getName() ) )
+ else if ( DocBookParser.ITALIC_ELEMENTS.contains( parser.getName() ) )
{
sink.italic_();
}
- else if ( DocBookParser.monospaceElements.contains( parser.getName() ) )
+ else if ( DocBookParser.MONOSPACE_ELEMENTS.contains( parser.getName() ) )
{
sink.monospaced_();
}
@@ -640,27 +644,27 @@
{
sink.tableCaption_();
}
- else if ( level == 1 )
+ else if ( level == 0 )
{
sink.title_();
}
- else if ( level == 2 )
+ else if ( level == Sink.SECTION_LEVEL_1 )
{
sink.sectionTitle1_();
}
- else if ( level == 3 )
+ else if ( level == Sink.SECTION_LEVEL_2 )
{
sink.sectionTitle2_();
}
- else if ( level == 4 )
+ else if ( level == Sink.SECTION_LEVEL_3 )
{
sink.sectionTitle3_();
}
- else if ( level == 5 )
+ else if ( level == Sink.SECTION_LEVEL_4 )
{
sink.sectionTitle4_();
}
- else if ( level == 6 )
+ else if ( level == Sink.SECTION_LEVEL_5 )
{
sink.sectionTitle5_();
}
@@ -687,6 +691,13 @@
//
// ----------------------------------------------------------------------
+ /**
+ * Returns the value of the given attribute.
+ *
+ * @param parser the parser to scan.
+ * @param name the attribute name.
+ * @return the attribute value.
+ */
private String getAttributeValue( XmlPullParser parser, String name )
{
for ( int i = 0; i < parser.getAttributeCount(); i++ )
@@ -700,6 +711,12 @@
return null;
}
+ /**
+ * Determines if the given element is a parent element.
+ *
+ * @param element the element to determine.
+ * @return true if the given element is a parent element.
+ */
private boolean isParent( String element )
{
if ( parent.size() > 0 )
Modified: maven/doxia/doxia/trunk/doxia-modules/doxia-module-docbook-simple/src/main/java/org/apache/maven/doxia/module/docbook/DocBookSink.java
URL: http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-modules/doxia-module-docbook-simple/src/main/java/org/apache/maven/doxia/module/docbook/DocBookSink.java?rev=567679&r1=567678&r2=567679&view=diff
==============================================================================
--- maven/doxia/doxia/trunk/doxia-modules/doxia-module-docbook-simple/src/main/java/org/apache/maven/doxia/module/docbook/DocBookSink.java (original)
+++ maven/doxia/doxia/trunk/doxia-modules/doxia-module-docbook-simple/src/main/java/org/apache/maven/doxia/module/docbook/DocBookSink.java Mon Aug 20 06:05:20 2007
@@ -22,7 +22,6 @@
import org.apache.maven.doxia.parser.Parser;
import org.apache.maven.doxia.sink.AbstractXmlSink;
import org.apache.maven.doxia.sink.StructureSink;
-import org.apache.maven.doxia.util.HtmlTools;
import org.apache.maven.doxia.util.LineBreaker;
import org.codehaus.plexus.util.FileUtils;
@@ -54,64 +53,89 @@
/** DocBook XML V4.0 XML system id: "http://www.oasis-open.org/docbook/xml/4.0/docbookx.dtd" */
public static final String DEFAULT_XML_SYSTEM_ID = "http://www.oasis-open.org/docbook/xml/4.0/docbookx.dtd";
+ /** The output writer. */
private LineBreaker out;
+ /** xmlMode. */
private boolean xmlMode = false;
+ /** encoding. */
private String encoding = null;
+ /** styleSheet. */
private String styleSheet = null;
+ /** language. */
private String lang = null;
+ /** publicId. */
private String publicId = null;
+ /** systemId. */
private String systemId = null;
+ /** italicBegin. */
private String italicBeginTag;
+ /** italicEnd. */
private String italicEndTag;
+ /** boldBegin. */
private String boldBeginTag;
+ /** boldEnd. */
private String boldEndTag;
+ /** monospacedBegin. */
private String monospacedBeginTag;
+ /** monospacedEnd. */
private String monospacedEndTag;
+ /** horizontalRule. */
private String horizontalRuleElement;
+ /** pageBreak. */
private String pageBreakElement;
+ /** lineBreak. */
private String lineBreakElement;
- protected String graphicsFileName;
+ /** An image source file. */
+ private String graphicsFileName;
+ /** hasTitle. */
private boolean hasTitle;
+ /** authorDate. */
private boolean authorDateFlag;
+ /** verbatim. */
private boolean verbatimFlag;
+ /** externalLink. */
private boolean externalLinkFlag;
+ /** tableHasCaption. */
private boolean tableHasCaption;
+ /** Used for table rows. */
private LineBreaker savedOut;
+ /** tableRows. */
private String tableRows;
+ /** tableHasGrid. */
private boolean tableHasGrid;
// -----------------------------------------------------------------------
/**
- * @param out the default writer
+ * @param writer the default writer.
*/
- public DocBookSink( Writer out )
+ public DocBookSink( Writer writer )
{
- this.out = new LineBreaker( out );
+ this.out = new LineBreaker( writer );
setItalicElement( "<emphasis>" );
setBoldElement( "<emphasis role=\"bold\">" );
setMonospacedElement( "<literal>" );
@@ -121,12 +145,12 @@
}
/**
- * TODO Try to replace by {@link HtmlTools#escapeHTML(String)}
*
- * @param text
- * @param xmlMode
- * @return
+ * @param text The text to escape.
+ * @param xmlMode xmlMode.
+ * @return The escaped text.
*/
+ // TODO: Try to replace by HtmlTools#escapeHTML(String).
public static final String escapeSGML( String text, boolean xmlMode )
{
int length = text.length();
@@ -174,76 +198,147 @@
return buffer.toString();
}
- public void setXMLMode( boolean xmlMode )
+ /**
+ * Sets the xml mode.
+ *
+ * @param mode the mode to set.
+ */
+ public void setXMLMode( boolean mode )
{
- this.xmlMode = xmlMode;
+ this.xmlMode = mode;
}
+ /**
+ * Returns the current xmlMode.
+ *
+ * @return the current xmlMode.
+ */
public boolean isXMLMode()
{
return xmlMode;
}
- public void setEncoding( String encoding )
+ /**
+ * Sets the encoding.
+ *
+ * @param enc the encoding to set.
+ */
+ public void setEncoding( String enc )
{
- this.encoding = encoding;
+ this.encoding = enc;
}
+ /**
+ * Returns the current encoding.
+ *
+ * @return the current encoding.
+ */
public String getEncoding()
{
return encoding;
}
- public void setStyleSheet( String styleSheet )
+ /**
+ * Sets the styleSheet.
+ *
+ * @param sheet the styleSheet to set.
+ */
+ public void setStyleSheet( String sheet )
{
- this.styleSheet = styleSheet;
+ this.styleSheet = sheet;
}
+ /**
+ * Returns the current styleSheet.
+ *
+ * @return the current styleSheet.
+ */
public String getStyleSheet()
{
return styleSheet;
}
- public void setPublicId( String publicId )
+ /**
+ * Sets the publicId.
+ *
+ * @param id the publicId to set.
+ */
+ public void setPublicId( String id )
{
- this.publicId = publicId;
+ this.publicId = id;
}
+ /**
+ * Returns the current publicId.
+ *
+ * @return the current publicId.
+ */
public String getPublicId()
{
return publicId;
}
- public void setSystemId( String systemId )
+ /**
+ * Sets the systemId.
+ *
+ * @param id the systemId to set.
+ */
+ public void setSystemId( String id )
{
- this.systemId = systemId;
+ this.systemId = id;
}
+ /**
+ * Returns the current systemId.
+ *
+ * @return the current systemId.
+ */
public String getSystemId()
{
return systemId;
}
- public void setLanguage( String lang )
+ /**
+ * Sets the language.
+ *
+ * @param language the language to set.
+ */
+ public void setLanguage( String language )
{
- this.lang = lang;
+ this.lang = language;
}
+ /**
+ * Returns the current language.
+ *
+ * @return the current language.
+ */
public String getLanguage()
{
return lang;
}
- public void setItalicElement( String italicBeginTag )
+ /**
+ * Sets the current italicBeginTag and constructs the corresponding end tag from it.
+ *
+ * @param tag the tag to set. If tag is null, the empty string is used.
+ */
+ public void setItalicElement( String tag )
{
- if ( italicBeginTag == null )
+ if ( tag == null )
{
- italicBeginTag = "";
+ tag = "";
}
- this.italicBeginTag = italicBeginTag;
+ this.italicBeginTag = tag;
italicEndTag = makeEndTag( italicBeginTag );
}
+ /**
+ * Constructs the corresponding end tag from the given begin tag.
+ *
+ * @param beginTag the begin tag to set. If null, the empty string is returned.
+ * @return the corresponding end tag.
+ */
private String makeEndTag( String beginTag )
{
int length = beginTag.length();
@@ -266,71 +361,129 @@
return "</" + tokens.nextToken() + ">";
}
+ /**
+ * Returns the current italicBeginTag.
+ *
+ * @return the current italicBeginTag. Defaults to "<emphasis>".
+ */
public String getItalicElement()
{
return italicBeginTag;
}
- public void setBoldElement( String boldBeginTag )
+ /**
+ * Sets the current boldBeginTag and constructs the corresponding end tag from it.
+ *
+ * @param tag the tag to set. If tag is null, the empty string is used.
+ */
+ public void setBoldElement( String tag )
{
- if ( boldBeginTag == null )
+ if ( tag == null )
{
- boldBeginTag = "";
+ tag = "";
}
- this.boldBeginTag = boldBeginTag;
+ this.boldBeginTag = tag;
boldEndTag = makeEndTag( boldBeginTag );
}
+ /**
+ * Returns the current boldBeginTag.
+ *
+ * @return the current boldBeginTag. Defaults to "<emphasis role=\"bold\">".
+ */
public String getBoldElement()
{
return boldBeginTag;
}
- public void setMonospacedElement( String monospacedBeginTag )
+ /**
+ * Sets the current monospacedBeginTag and constructs the corresponding end tag from it.
+ *
+ * @param tag the tag to set. If tag is null, the empty string is used.
+ */
+ public void setMonospacedElement( String tag )
{
- if ( monospacedBeginTag == null )
+ if ( tag == null )
{
- monospacedBeginTag = "";
+ tag = "";
}
- this.monospacedBeginTag = monospacedBeginTag;
+ this.monospacedBeginTag = tag;
monospacedEndTag = makeEndTag( monospacedBeginTag );
}
+ /**
+ * Returns the current monospacedBeginTag.
+ *
+ * @return the current monospacedBeginTag. Defaults to "<literal>>".
+ */
public String getMonospacedElement()
{
return monospacedBeginTag;
}
- public void setHorizontalRuleElement( String horizontalRuleElement )
+ /**
+ * Sets the current horizontalRuleElement.
+ *
+ * @param element the element to set.
+ */
+ public void setHorizontalRuleElement( String element )
{
- this.horizontalRuleElement = horizontalRuleElement;
+ this.horizontalRuleElement = element;
}
+ /**
+ * Returns the current horizontalRuleElement.
+ *
+ * @return the current horizontalRuleElement. Defaults to "<!-- HR -->".
+ */
public String getHorizontalRuleElement()
{
return horizontalRuleElement;
}
- public void setPageBreakElement( String pageBreakElement )
+ /**
+ * Sets the current pageBreakElement.
+ *
+ * @param element the element to set.
+ */
+ public void setPageBreakElement( String element )
{
- this.pageBreakElement = pageBreakElement;
+ this.pageBreakElement = element;
}
+ /**
+ * Returns the current pageBreakElement.
+ *
+ * @return the current pageBreakElement. Defaults to "<!-- PB -->".
+ */
public String getPageBreakElement()
{
return pageBreakElement;
}
- public void setLineBreakElement( String lineBreakElement )
+ /**
+ * Sets the current lineBreakElement.
+ *
+ * @param element the element to set.
+ */
+ public void setLineBreakElement( String element )
{
- this.lineBreakElement = lineBreakElement;
+ this.lineBreakElement = element;
}
+ /**
+ * Returns the current lineBreakElement.
+ *
+ * @return the current lineBreakElement. Defaults to "<!-- LB -->".
+ */
public String getLineBreakElement()
{
return lineBreakElement;
}
+ /**
+ * Reset all variables.
+ */
private void resetState()
{
hasTitle = false;
@@ -857,6 +1010,7 @@
att.addAttribute( FORMAT_ATTRIBUTE, format );
att.addAttribute( FILEREF_ATTRIBUTE, escapeSGML( graphicsFileName, xmlMode ) );
+ // TODO: why?
if ( xmlMode )
{
writeSimpleTag( IMAGEDATA_TAG, att );
@@ -864,6 +1018,7 @@
else
{
writeStartTag( IMAGEDATA_TAG, att );
+ writeEndTag( IMAGEDATA_TAG );
}
writeEndTag( IMAGEOBJECT_TAG );
@@ -875,6 +1030,7 @@
/** {@inheritDoc} */
public void figureGraphics( String name )
{
+ // TODO: extension?
graphicsFileName = name + ".jpeg";
}
@@ -996,6 +1152,7 @@
att = new SimpleAttributeSet();
att.addAttribute( Attribute.ALIGN.toString(), justif );
+ // TODO: why?
if ( xmlMode )
{
writeSimpleTag( COLSPEC_TAG, att );
@@ -1003,6 +1160,7 @@
else
{
writeStartTag( COLSPEC_TAG, att );
+ writeEndTag( COLSPEC_TAG );
}
}
@@ -1121,6 +1279,7 @@
MutableAttributeSet att = new SimpleAttributeSet();
att.addAttribute( Attribute.ID, "a." + StructureSink.linkToKey( name ) );
+ // TODO: why?
if ( xmlMode )
{
writeSimpleTag( ANCHOR_TAG, att );
@@ -1134,6 +1293,21 @@
/**
* {@inheritDoc}
+ * @see DocbookMarkup#ANCHOR_TAG
+ */
+ public void anchor_()
+ {
+ if ( !authorDateFlag )
+ {
+ if ( !xmlMode )
+ {
+ writeEndTag( ANCHOR_TAG );
+ }
+ }
+ }
+
+ /**
+ * {@inheritDoc}
* @see DocbookMarkup#ULINK_TAG
* @see DocbookMarkup#URL_ATTRIBUTE
* @see DocbookMarkup#LINK_TAG
@@ -1228,8 +1402,8 @@
/** {@inheritDoc} */
public void nonBreakingSpace()
{
- //markup(" ");
- markup( " " );
+ markup( " " );
+ //markup( " " );
}
/** {@inheritDoc} */
@@ -1247,16 +1421,31 @@
// -----------------------------------------------------------------------
+ /**
+ * Write text to output, preserving white space.
+ *
+ * @param text The text to write.
+ */
protected void markup( String text )
{
out.write( text, /*preserveSpace*/ true );
}
+ /**
+ * Write SGML escaped text to output, not preserving white space.
+ *
+ * @param text The text to write.
+ */
protected void content( String text )
{
out.write( escapeSGML( text, xmlMode ), /*preserveSpace*/ false );
}
+ /**
+ * Write SGML escaped text to output, preserving white space.
+ *
+ * @param text The text to write.
+ */
protected void verbatimContent( String text )
{
out.write( escapeSGML( text, xmlMode ), /*preserveSpace*/ true );
Added: maven/doxia/doxia/trunk/doxia-modules/doxia-module-docbook-simple/src/test/java/org/apache/maven/doxia/module/docbook/DocBookIdentityTest.java
URL: http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-modules/doxia-module-docbook-simple/src/test/java/org/apache/maven/doxia/module/docbook/DocBookIdentityTest.java?rev=567679&view=auto
==============================================================================
--- maven/doxia/doxia/trunk/doxia-modules/doxia-module-docbook-simple/src/test/java/org/apache/maven/doxia/module/docbook/DocBookIdentityTest.java (added)
+++ maven/doxia/doxia/trunk/doxia-modules/doxia-module-docbook-simple/src/test/java/org/apache/maven/doxia/module/docbook/DocBookIdentityTest.java Mon Aug 20 06:05:20 2007
@@ -0,0 +1,46 @@
+package org.apache.maven.doxia.module.docbook;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+
+import java.io.Writer;
+
+import org.apache.maven.doxia.module.AbstractIdentityTest;
+import org.apache.maven.doxia.parser.Parser;
+import org.apache.maven.doxia.sink.Sink;
+
+
+/**
+ * Check that piping a full model through a DocBookParser and a DocBookSink
+ * leaves the model unchanged. The test is done in AbstractIdentityTest.
+ */
+public class DocBookIdentityTest extends AbstractIdentityTest
+{
+ /** {@inheritDoc} */
+ protected Sink createSink( Writer writer )
+ {
+ return new DocBookSink( writer );
+ }
+
+ /** {@inheritDoc} */
+ protected Parser createParser()
+ {
+ return new DocBookParser();
+ }
+}
Propchange: maven/doxia/doxia/trunk/doxia-modules/doxia-module-docbook-simple/src/test/java/org/apache/maven/doxia/module/docbook/DocBookIdentityTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/doxia/doxia/trunk/doxia-modules/doxia-module-docbook-simple/src/test/java/org/apache/maven/doxia/module/docbook/DocBookIdentityTest.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Modified: maven/doxia/doxia/trunk/doxia-modules/doxia-module-docbook-simple/src/test/java/org/apache/maven/doxia/module/docbook/DocBookParserTest.java
URL: http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-modules/doxia-module-docbook-simple/src/test/java/org/apache/maven/doxia/module/docbook/DocBookParserTest.java?rev=567679&r1=567678&r2=567679&view=diff
==============================================================================
--- maven/doxia/doxia/trunk/doxia-modules/doxia-module-docbook-simple/src/test/java/org/apache/maven/doxia/module/docbook/DocBookParserTest.java (original)
+++ maven/doxia/doxia/trunk/doxia-modules/doxia-module-docbook-simple/src/test/java/org/apache/maven/doxia/module/docbook/DocBookParserTest.java Mon Aug 20 06:05:20 2007
@@ -19,25 +19,80 @@
* under the License.
*/
-import org.apache.maven.doxia.parser.AbstractParserTestCase;
+import java.io.IOException;
+import java.io.Reader;
+import java.io.Writer;
+
+import org.apache.maven.doxia.parser.AbstractParserTest;
import org.apache.maven.doxia.parser.Parser;
+import org.apache.maven.doxia.parser.ParseException;
+import org.apache.maven.doxia.sink.Sink;
/**
* @author <a href="mailto:lars@trieloff.net">Lars Trieloff</a>
* @version $Id$
*/
-public class DocBookParserTest
- extends AbstractParserTestCase
+public class DocBookParserTest extends AbstractParserTest
{
+ /** The parser to test. */
+ private DocBookParser parser;
+
/** {@inheritDoc} */
- protected Parser getParser()
+ protected void setUp()
+ throws Exception
{
- return new DocBookParser();
+ super.setUp();
+
+ parser = (DocBookParser) lookup( Parser.ROLE, "doc-book" );
}
/** {@inheritDoc} */
- protected String getDocument()
+ protected Parser createParser()
{
- return "src/test/resources/guide.xml";
+ return parser;
}
+
+ /** {@inheritDoc} */
+ protected String outputExtension()
+ {
+ return "xml";
+ }
+
+ /**
+ * Parses the test document test.xml and re-emits it into test.docbook.
+ *
+ * @throws IOException if something goes wrong
+ * @throws ParseException if something goes wrong
+ */
+ public void testTestDocument()
+ throws IOException, ParseException
+ {
+ Writer writer = null;
+
+ Reader reader = null;
+
+ try
+ {
+ writer = getTestWriter( "test", "docbook" );
+ reader = getTestReader( "test" );
+
+ Sink sink = new DocBookSink( writer );
+
+ createParser().parse( reader, sink );
+ }
+ finally
+ {
+ if ( writer != null )
+ {
+ writer.close();
+ }
+
+ if ( reader != null )
+ {
+ reader.close();
+ }
+ }
+ }
+
+
}
Modified: maven/doxia/doxia/trunk/doxia-modules/doxia-module-docbook-simple/src/test/java/org/apache/maven/doxia/module/docbook/DocBookSinkTest.java
URL: http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-modules/doxia-module-docbook-simple/src/test/java/org/apache/maven/doxia/module/docbook/DocBookSinkTest.java?rev=567679&r1=567678&r2=567679&view=diff
==============================================================================
--- maven/doxia/doxia/trunk/doxia-modules/doxia-module-docbook-simple/src/test/java/org/apache/maven/doxia/module/docbook/DocBookSinkTest.java (original)
+++ maven/doxia/doxia/trunk/doxia-modules/doxia-module-docbook-simple/src/test/java/org/apache/maven/doxia/module/docbook/DocBookSinkTest.java Mon Aug 20 06:05:20 2007
@@ -19,20 +19,20 @@
* under the License.
*/
-import org.apache.maven.doxia.sink.AbstractSinkTestCase;
+import org.apache.maven.doxia.sink.AbstractSinkTest;
import org.apache.maven.doxia.sink.Sink;
import org.apache.maven.doxia.parser.Parser;
import java.io.Reader;
import java.io.InputStream;
import java.io.InputStreamReader;
+import java.io.Writer;
/**
* @author <a href="mailto:jason@maven.org">Jason van Zyl</a>
* @version $Id$
*/
-public class DocBookSinkTest
- extends AbstractSinkTestCase
+public class DocBookSinkTest extends AbstractSinkTest
{
/** {@inheritDoc} */
protected String outputExtension()
@@ -41,26 +41,194 @@
}
/** {@inheritDoc} */
- protected Parser createParser()
+ protected Sink createSink( Writer writer )
{
- return new DocBookParser();
+ return new DocBookSink( writer );
}
/** {@inheritDoc} */
- protected Sink createSink()
- throws Exception
+ protected String getTitleBlock( String title )
{
- return new DocBookSink( getTestWriter() );
+ return "<articleinfo><title>" + title + "</title>";
}
/** {@inheritDoc} */
- protected Reader getTestReader()
- throws Exception
+ protected String getAuthorBlock( String author )
{
- InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream( "guide.xml" );
+ return "<corpauthor>" + author + "</corpauthor>";
+ }
+
+ /** {@inheritDoc} */
+ protected String getDateBlock( String date )
+ {
+ return "<date>" + date + "</date>";
+ }
+
+ /** {@inheritDoc} */
+ protected String getHeadBlock()
+ {
+ return "<!DOCTYPE article PUBLIC \"-//OASIS//DTD DocBook V4.1//EN\"><article>";
+ }
+
+ /** {@inheritDoc} */
+ protected String getBodyBlock()
+ {
+ return "</article>";
+ }
+
+ /** {@inheritDoc} */
+ protected String getSectionTitleBlock( String title )
+ {
+ return "<title>" + title + "</title>";
+ }
+
+ /** {@inheritDoc} */
+ protected String getSection1Block( String title )
+ {
+ return "<section>" + title + "</section>";
+ }
+
+ /** {@inheritDoc} */
+ protected String getSection2Block( String title )
+ {
+ return "<section>" + title + "</section>";
+ }
+
+ /** {@inheritDoc} */
+ protected String getSection3Block( String title )
+ {
+ return "<section>" + title + "</section>";
+ }
+
+ /** {@inheritDoc} */
+ protected String getSection4Block( String title )
+ {
+ return "<section>" + title + "</section>";
+ }
+
+ /** {@inheritDoc} */
+ protected String getSection5Block( String title )
+ {
+ return "<section>" + title + "</section>";
+ }
+
+ /** {@inheritDoc} */
+ protected String getListBlock( String item )
+ {
+ return "<itemizedlist><listitem>" + item + "</listitem></itemizedlist>";
+ }
+
+ /** {@inheritDoc} */
+ protected String getNumberedListBlock( String item )
+ {
+ return "<orderedlist numeration=\"lowerroman\"><listitem>"
+ + item + "</listitem></orderedlist>";
+ }
+
+ /** {@inheritDoc} */
+ protected String getDefinitionListBlock( String definum, String definition )
+ {
+ return "<variablelist><varlistentry><term>" + definum
+ + "</term><listitem>" + definition
+ + "</listitem></varlistentry></variablelist>";
+ }
+
+ /** {@inheritDoc} */
+ protected String getFigureBlock( String source, String caption )
+ {
+ // TODO: fix source
+ return "<figure><title>" + caption + "</title><mediaobject><imageobject><imagedata fileref=\"figure.jpeg\" format=\"JPEG\"></imagedata></imageobject></mediaobject></figure>";
+ }
+
+ /** {@inheritDoc} */
+ protected String getTableBlock( String cell, String caption )
+ {
+ return "<table frame=\"none\" rowsep=\"0\" colsep=\"0\"><title>" + caption
+ + "</title><tgroup cols=\"1\"><colspec align=\"center\"></colspec><tbody><row><entry><para>"
+ + cell + "</para></entry></row></tbody></tgroup></table>";
+ }
+
+ /** {@inheritDoc} */
+ protected String getParagraphBlock( String text )
+ {
+ return "<para>" + text + "</para>";
+ }
+
+ /** {@inheritDoc} */
+ protected String getVerbatimBlock( String text )
+ {
+ return "<programlisting>" + text + "</programlisting>";
+ }
+
+ /** {@inheritDoc} */
+ protected String getHorizontalRuleBlock()
+ {
+ return "<!-- HR -->";
+ }
+
+ /** {@inheritDoc} */
+ protected String getPageBreakBlock()
+ {
+ return "<!-- PB -->";
+ }
+
+ /** {@inheritDoc} */
+ protected String getAnchorBlock( String anchor )
+ {
+ // TODO: fix id
+ return "<anchor id=\"a.anchor\">" + anchor + "</anchor>";
+ }
+
+ /** {@inheritDoc} */
+ protected String getLinkBlock( String link, String text )
+ {
+ // TODO: fix link
+ return "<link linkend=\"a.link\">" + text + "</link>";
+ }
- InputStreamReader reader = new InputStreamReader( is );
+ /** {@inheritDoc} */
+ protected String getItalicBlock( String text )
+ {
+ return "<emphasis>" + text + "</emphasis>";
+ }
+
+ /** {@inheritDoc} */
+ protected String getBoldBlock( String text )
+ {
+ return "<emphasis role=\"bold\">" + text + "</emphasis>";
+ }
- return reader;
+ /** {@inheritDoc} */
+ protected String getMonospacedBlock( String text )
+ {
+ return "<literal>" + text + "</literal>";
}
+
+ /** {@inheritDoc} */
+ protected String getLineBreakBlock()
+ {
+ return "<!-- LB -->";
+ }
+
+ /** {@inheritDoc} */
+ protected String getNonBreakingSpaceBlock()
+ {
+ return " ";
+ }
+
+ /** {@inheritDoc} */
+ protected String getTextBlock( String text )
+ {
+ // TODO: retreive those from the sink
+ return "~, =, -, +, *, [, ], <, >, {, }, \\";
+ }
+
+ /** {@inheritDoc} */
+ protected String getRawTextBlock( String text )
+ {
+ // TODO
+ return "";
+ }
+
+
}