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 2009/06/04 14:20:56 UTC

svn commit: r781717 - in /maven/doxia/doxia/trunk: doxia-book/src/test/java/org/apache/maven/doxia/book/services/renderer/docbook/ doxia-modules/doxia-module-docbook-simple/src/main/java/org/apache/maven/doxia/module/docbook/ doxia-modules/doxia-module...

Author: ltheussl
Date: Thu Jun  4 12:20:55 2009
New Revision: 781717

URL: http://svn.apache.org/viewvc?rev=781717&view=rev
Log:
[DOXIA-184, DOXIA-321] Fix figure handling in docbook parser and sink

Modified:
    maven/doxia/doxia/trunk/doxia-book/src/test/java/org/apache/maven/doxia/book/services/renderer/docbook/DocBookBookSinkTest.java
    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/DocBookSinkTest.java

Modified: maven/doxia/doxia/trunk/doxia-book/src/test/java/org/apache/maven/doxia/book/services/renderer/docbook/DocBookBookSinkTest.java
URL: http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-book/src/test/java/org/apache/maven/doxia/book/services/renderer/docbook/DocBookBookSinkTest.java?rev=781717&r1=781716&r2=781717&view=diff
==============================================================================
--- maven/doxia/doxia/trunk/doxia-book/src/test/java/org/apache/maven/doxia/book/services/renderer/docbook/DocBookBookSinkTest.java (original)
+++ maven/doxia/doxia/trunk/doxia-book/src/test/java/org/apache/maven/doxia/book/services/renderer/docbook/DocBookBookSinkTest.java Thu Jun  4 12:20:55 2009
@@ -21,6 +21,8 @@
 
 import java.io.Writer;
 
+import java.util.Locale;
+
 import javax.swing.text.MutableAttributeSet;
 import javax.swing.text.SimpleAttributeSet;
 
@@ -29,6 +31,9 @@
 import org.apache.maven.doxia.sink.Sink;
 import org.apache.maven.doxia.sink.SinkUtils;
 
+import org.apache.maven.doxia.util.DoxiaUtils;
+import org.codehaus.plexus.util.FileUtils;
+
 /**
  * Test the book path of the DockBook sink
  * @author Dave Syer
@@ -375,10 +380,11 @@
     /** {@inheritDoc} */
     protected String getFigureBlock( String source, String caption )
     {
-        // TODO: fix source
-        return "<figure><title>" + caption
-            + "</title><mediaobject><imageobject><imagedata fileref=\"figure.jpg.jpeg\" format=\"JPEG\" /></imageobject></mediaobject>"
-            + "</figure>";
+        String format = FileUtils.extension( source ).toUpperCase( Locale.ENGLISH );
+
+        return "<mediaobject><imageobject>"
+                + "<imagedata fileref=\"" + source + "\" format=\"" + format + "\" />"
+                + "</imageobject><caption><para>" + caption + "</para></caption></mediaobject>";
     }
 
     /** {@inheritDoc} */
@@ -422,13 +428,14 @@
     /** {@inheritDoc} */
     protected String getAnchorBlock( String anchor )
     {
-        return "<anchor id=\"" + anchor + "\" />" + anchor;
+        return "<anchor id=\"" + anchor + "\" />" + anchor + "<!-- anchor_end -->";
     }
 
     /** {@inheritDoc} */
     protected String getLinkBlock( String link, String text )
     {
-        return "<link linkend=\"" + link + "\">" + text + "</link>";
+        String linkend = DoxiaUtils.isInternalLink( link ) ? link.substring( 1 ) : link;
+        return "<link linkend=\"" + linkend + "\">" + text + "</link>";
     }
 
     /** {@inheritDoc} */

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=781717&r1=781716&r2=781717&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 Thu Jun  4 12:20:55 2009
@@ -176,27 +176,30 @@
         {
             sink.definedTerm();
         }
-        else if ( parser.getName().equals( SimplifiedDocbookMarkup.FIGURE_TAG.toString() ) )
+        else if ( parser.getName().equals( SimplifiedDocbookMarkup.MEDIAOBJECT_TAG.toString() ) )
         {
             handleFigureStart( sink, parser);
         }
-        else if ( parser.getName().equals( SimplifiedDocbookMarkup.IMAGEOBJECT_TAG.toString() ) )
+        else if ( parser.getName().equals( SimplifiedDocbookMarkup.IMAGEOBJECT_TAG.toString() )
+                || parser.getName().equals( SimplifiedDocbookMarkup.FIGURE_TAG.toString() )
+                || parser.getName().equals( SimplifiedDocbookMarkup.THEAD_TAG.toString() )
+                || parser.getName().equals( SimplifiedDocbookMarkup.ARTICLEINFO_TAG.toString() ) )
         {
-            handleImageObjectStart( parser, sink );
+            parent.push( parser.getName() );
+        }
+        else if ( parser.getName().equals( SimplifiedDocbookMarkup.IMAGEDATA_TAG.toString() ) )
+        {
+            handleImageDataStart( parser, sink );
         }
         else if ( parser.getName().equals( SimplifiedDocbookMarkup.CAPTION_TAG.toString() ) )
         {
-            handleCaptionStart(sink);
+            handleCaptionStart( parser, sink );
         }
         else if ( parser.getName().equals( SimplifiedDocbookMarkup.TABLE_TAG.toString() )
             || parser.getName().equals( SimplifiedDocbookMarkup.INFORMALTABLE_TAG.toString() ) )
         {
             handleTableStart( sink, parser);
         }
-        else if ( parser.getName().equals( SimplifiedDocbookMarkup.THEAD_TAG.toString() ) )
-        {
-            parent.push( parser.getName() );
-        }
         else if ( parser.getName().equals( SimplifiedDocbookMarkup.TR_TAG.toString() )
                 || parser.getName().equals( SimplifiedDocbookMarkup.ROW_TAG.toString() ) )
         {
@@ -214,7 +217,7 @@
         }
         else if ( parser.getName().equals( SimplifiedDocbookMarkup.PARA_TAG.toString() ) )
         {
-            sink.paragraph();
+            handleParaStart( sink );
         }
         else if ( VERBATIM_ELEMENTS.contains( parser.getName() ) )
         {
@@ -276,10 +279,6 @@
         {
             handleXrefStart( parser, sink );
         }
-        else if ( parser.getName().equals( SimplifiedDocbookMarkup.ARTICLEINFO_TAG.toString() ) )
-        {
-            parent.push( parser.getName() );
-        }
         else
         {
             if ( !ignorable( parser.getName() ) )
@@ -347,11 +346,18 @@
         {
             sink.definedTerm_();
         }
-        else if ( parser.getName().equals( SimplifiedDocbookMarkup.FIGURE_TAG.toString() ) )
+        else if ( parser.getName().equals( SimplifiedDocbookMarkup.MEDIAOBJECT_TAG.toString() ) )
         {
             sink.figure_();
             parent.pop();
         }
+        else if ( parser.getName().equals( SimplifiedDocbookMarkup.IMAGEOBJECT_TAG.toString() )
+                || parser.getName().equals( SimplifiedDocbookMarkup.FIGURE_TAG.toString() )
+                || parser.getName().equals( SimplifiedDocbookMarkup.THEAD_TAG.toString() )
+                || parser.getName().equals( SimplifiedDocbookMarkup.ARTICLEINFO_TAG.toString() ) )
+        {
+            parent.pop();
+        }
         else if ( parser.getName().equals( SimplifiedDocbookMarkup.CAPTION_TAG.toString() ) )
         {
             handleCaptionEnd(sink);
@@ -363,10 +369,6 @@
             //TODO handle tgroups
             parent.pop();
         }
-        else if ( parser.getName().equals( SimplifiedDocbookMarkup.THEAD_TAG.toString() ) )
-        {
-            parent.pop();
-        }
         else if ( parser.getName().equals( SimplifiedDocbookMarkup.TR_TAG.toString() )
                 || parser.getName().equals( SimplifiedDocbookMarkup.ROW_TAG.toString() ) )
         {
@@ -384,7 +386,7 @@
         }
         else if ( parser.getName().equals( SimplifiedDocbookMarkup.PARA_TAG.toString() ) )
         {
-            sink.paragraph_();
+            handleParaEnd( sink );
         }
         else if ( VERBATIM_ELEMENTS.contains( parser.getName() ) )
         {
@@ -444,10 +446,6 @@
                 sink.link_();
             }
         }
-        else if ( parser.getName().equals( SimplifiedDocbookMarkup.ARTICLEINFO_TAG.toString() ) )
-        {
-            parent.pop();
-        }
     }
 
     /** {@inheritDoc} */
@@ -509,22 +507,26 @@
         return null;
     }
 
-    private void handleCaptionStart( Sink sink )
+    private void handleCaptionStart( XmlPullParser parser, Sink sink )
     {
-        if ( isParent( SimplifiedDocbookMarkup.FIGURE_TAG.toString() ) )
+        if ( isParent( SimplifiedDocbookMarkup.MEDIAOBJECT_TAG.toString() ) )
         {
-            sink.figureCaption();
+            sink.figureCaption( null );
         }
         else if ( isParent( SimplifiedDocbookMarkup.INFORMALTABLE_TAG.toString() )
             || isParent( SimplifiedDocbookMarkup.TABLE_TAG.toString() ) )
         {
             sink.tableCaption();
         }
+
+        parent.push( parser.getName() );
     }
 
     private void handleCaptionEnd( Sink sink )
     {
-        if ( isParent( SimplifiedDocbookMarkup.FIGURE_TAG.toString() ) )
+        parent.pop();
+
+        if ( isParent( SimplifiedDocbookMarkup.MEDIAOBJECT_TAG.toString() ) )
         {
             sink.figureCaption_();
         }
@@ -552,7 +554,7 @@
 
     private void handleFigureStart( Sink sink, XmlPullParser parser )
     {
-        sink.figure();
+        sink.figure( null );
         parent.push( parser.getName() );
     }
 
@@ -591,15 +593,10 @@
         }
     }
 
-    private void handleImageObjectStart( XmlPullParser parser, Sink sink )
+    private void handleImageDataStart( XmlPullParser parser, Sink sink )
     {
         String fileref = getAttributeValue( parser, "fileref" );
-
-        if ( fileref != null )
-        {
-            sink.figureGraphics( fileref );
-            parent.push( parser.getName() );
-        }
+        sink.figureGraphics( fileref, null );
     }
 
     private void handleItemizedListStart( Sink sink, XmlPullParser parser )
@@ -668,6 +665,22 @@
         parent.push( parser.getName() );
     }
 
+    private void handleParaEnd( Sink sink )
+    {
+        if ( !isParent( SimplifiedDocbookMarkup.CAPTION_TAG.toString() ) )
+        {
+            sink.paragraph_();
+        }
+    }
+
+    private void handleParaStart( Sink sink )
+    {
+        if ( !isParent( SimplifiedDocbookMarkup.CAPTION_TAG.toString() ) )
+        {
+            sink.paragraph();
+        }
+    }
+
     private void handleTableStart( Sink sink, XmlPullParser parser )
     {
         sink.table();
@@ -677,12 +690,7 @@
 
     private void handleTitleStart( Sink sink )
     {
-        // TODO: title in abstract, authorblurb, bibliography, bibliodiv, bibliomset, appendix
-        if ( isParent( SimplifiedDocbookMarkup.FIGURE_TAG.toString() ) )
-        {
-            sink.figureCaption();
-        }
-        else if ( isParent( SimplifiedDocbookMarkup.TABLE_TAG.toString() )
+        if ( isParent( SimplifiedDocbookMarkup.TABLE_TAG.toString() )
                 || isParent( SimplifiedDocbookMarkup.INFORMALTABLE_TAG.toString() ) )
         {
             sink.tableCaption();
@@ -696,16 +704,15 @@
         {
             sink.sectionTitle( level, null );
         }
-        // else ignore
+        else
+        {
+            sink.bold();
+        }
     }
 
     private void handleTitleEnd( Sink sink )
     {
-        if ( isParent( SimplifiedDocbookMarkup.FIGURE_TAG.toString() ) )
-        {
-            sink.figureCaption_();
-        }
-        else if ( isParent( SimplifiedDocbookMarkup.TABLE_TAG.toString() )
+        if ( isParent( SimplifiedDocbookMarkup.TABLE_TAG.toString() )
                 || isParent( SimplifiedDocbookMarkup.INFORMALTABLE_TAG.toString() ) )
         {
             sink.tableCaption_();
@@ -719,7 +726,10 @@
         {
             sink.title_();
         }
-        // else ignore
+        else
+        {
+            sink.bold_();
+        }
     }
 
     private void handleUlinkStart( XmlPullParser parser, Sink sink )
@@ -753,7 +763,10 @@
 
     private boolean ignorable( String name )
     {
-        return name.equals( SimplifiedDocbookMarkup.ANCHOR_TAG.toString() );
+        return name.equals( SimplifiedDocbookMarkup.ANCHOR_TAG.toString() )
+                || name.equals( SimplifiedDocbookMarkup.IMAGEOBJECT_TAG.toString() )
+                || name.equals( SimplifiedDocbookMarkup.PHRASE_TAG.toString() )
+                || name.equals( SimplifiedDocbookMarkup.TEXTOBJECT_TAG.toString() );
     }
 
     /**

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=781717&r1=781716&r2=781717&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 Thu Jun  4 12:20:55 2009
@@ -1091,9 +1091,15 @@
     }
 
     /** {@inheritDoc} */
+    public void figure()
+    {
+        writeStartTag( SimplifiedDocbookMarkup.MEDIAOBJECT_TAG );
+    }
+
+    /** {@inheritDoc} */
     public void figure_()
     {
-        graphicElement();
+        writeEndTag( SimplifiedDocbookMarkup.MEDIAOBJECT_TAG );
     }
 
     /**
@@ -1104,6 +1110,7 @@
      * @see SimplifiedDocbookMarkup#IMAGEDATA_TAG
      * @see SimplifiedDocbookMarkup#FORMAT_ATTRIBUTE
      * @see SimplifiedDocbookMarkup#FILEREF_ATTRIBUTE
+     * @deprecated do not use!
      */
     protected void graphicElement()
     {
@@ -1134,8 +1141,17 @@
     /** {@inheritDoc} */
     public void figureGraphics( String name )
     {
-        // TODO: extension?
-        graphicsFileName = name + ".jpeg";
+        String format = FileUtils.extension( name ).toUpperCase( Locale.ENGLISH );
+
+        writeStartTag( SimplifiedDocbookMarkup.IMAGEOBJECT_TAG );
+
+        MutableAttributeSet att = new SimpleAttributeSet();
+        att.addAttribute( SimplifiedDocbookMarkup.FORMAT_ATTRIBUTE, format );
+        att.addAttribute( SimplifiedDocbookMarkup.FILEREF_ATTRIBUTE, HtmlTools.escapeHTML( name, true ) );
+
+        writeSimpleTag( SimplifiedDocbookMarkup.IMAGEDATA_TAG, att );
+
+        writeEndTag( SimplifiedDocbookMarkup.IMAGEOBJECT_TAG );
     }
 
     /**
@@ -1145,8 +1161,8 @@
      */
     public void figureCaption()
     {
-        writeStartTag( SimplifiedDocbookMarkup.FIGURE_TAG );
-        writeStartTag( SimplifiedDocbookMarkup.TITLE_TAG );
+        writeStartTag( SimplifiedDocbookMarkup.CAPTION_TAG );
+        writeStartTag( SimplifiedDocbookMarkup.PARA_TAG );
     }
 
     /**
@@ -1156,9 +1172,8 @@
      */
     public void figureCaption_()
     {
-        writeEndTag( SimplifiedDocbookMarkup.TITLE_TAG );
-        graphicElement();
-        writeEndTag( SimplifiedDocbookMarkup.FIGURE_TAG );
+        writeEndTag( SimplifiedDocbookMarkup.PARA_TAG );
+        writeEndTag( SimplifiedDocbookMarkup.CAPTION_TAG );
     }
 
     /** {@inheritDoc} */

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=781717&r1=781716&r2=781717&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 Thu Jun  4 12:20:55 2009
@@ -21,6 +21,8 @@
 
 import java.io.Writer;
 
+import java.util.Locale;
+
 import javax.swing.text.MutableAttributeSet;
 import javax.swing.text.SimpleAttributeSet;
 
@@ -29,6 +31,8 @@
 import org.apache.maven.doxia.sink.SinkUtils;
 import org.apache.maven.doxia.util.DoxiaUtils;
 
+import org.codehaus.plexus.util.FileUtils;
+
 /**
  * @author <a href="mailto:jason@maven.org">Jason van Zyl</a>
  * @version $Id$
@@ -145,10 +149,11 @@
     /** {@inheritDoc} */
     protected String getFigureBlock( String source, String caption )
     {
-        // TODO: fix source
-        return "<figure><title>" + caption
-            + "</title><mediaobject><imageobject><imagedata fileref=\"figure.jpg.jpeg\" format=\"JPEG\" /></imageobject></mediaobject>"
-            + "</figure>";
+        String format = FileUtils.extension( source ).toUpperCase( Locale.ENGLISH );
+
+        return "<mediaobject><imageobject>"
+                + "<imagedata fileref=\"" + source + "\" format=\"" + format + "\" />"
+                + "</imageobject><caption><para>" + caption + "</para></caption></mediaobject>";
     }
 
     /** {@inheritDoc} */