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("&#x00A0;");
-        markup( "&nbsp;" );
+        markup( "&#x00A0;" );
+        //markup( "&nbsp;" );
     }
 
     /** {@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 "&#x00A0;";
+    }
+
+    /** {@inheritDoc} */
+    protected String getTextBlock( String text )
+    {
+        // TODO: retreive those from the sink
+        return "~, =, -, +, *, [, ], &lt;, &gt;, {, }, \\";
+    }
+
+    /** {@inheritDoc} */
+    protected String getRawTextBlock( String text )
+    {
+        // TODO
+        return "";
+    }
+
+
 }