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 12:25:49 UTC

svn commit: r781702 - 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/

Author: ltheussl
Date: Thu Jun  4 10:25:46 2009
New Revision: 781702

URL: http://svn.apache.org/viewvc?rev=781702&view=rev
Log:
[DOXIA-184] Clean up anchors and links

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/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=781702&r1=781701&r2=781702&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 10:25:46 2009
@@ -146,7 +146,7 @@
             sink.body();
         }
 
-        handleIdAnchor( getAttributeValue( parser, ID_ATTRIBUTE ), sink );
+        handleIdAnchor( parser, sink );
 
         if ( HIER_ELEMENTS.contains( parser.getName() ) )
         {
@@ -282,7 +282,10 @@
         }
         else
         {
-            handleUnknown( parser, sink, HtmlMarkup.TAG_TYPE_START );
+            if ( !ignorable( parser.getName() ) )
+            {
+                handleUnknown( parser, sink, HtmlMarkup.TAG_TYPE_START );
+            }
         }
     }
 
@@ -465,6 +468,10 @@
         {
             sink.lineBreak();
         }
+        else if ( "anchor_end".equals( text.trim() ) )
+        {
+            sink.anchor_();
+        }
         else
         {
             sink.comment( text.trim() );
@@ -569,13 +576,18 @@
         parent.push( parser.getName() );
     }
 
-    private void handleIdAnchor( String id, Sink sink )
+    private void handleIdAnchor( XmlPullParser parser, Sink sink )
     {
+        String id = getAttributeValue( parser, ID_ATTRIBUTE );
         //catch link targets
         if ( id != null )
         {
             sink.anchor( id );
-            sink.anchor_();
+
+            if ( !parser.getName().equals( SimplifiedDocbookMarkup.ANCHOR_TAG.toString() ) )
+            {
+                sink.anchor_();
+            }
         }
     }
 
@@ -599,8 +611,8 @@
 
     private void handleLinkStart( XmlPullParser parser, Sink sink )
     {
-        String linkend = getAttributeValue( parser,
-                SimplifiedDocbookMarkup.LINKEND_ATTRIBUTE );
+        String linkend = getAttributeValue( parser, SimplifiedDocbookMarkup.LINKEND_ATTRIBUTE );
+
         if ( linkend != null )
         {
             parent.push( parser.getName() );
@@ -729,8 +741,8 @@
 
     private void handleXrefStart( XmlPullParser parser, Sink sink )
     {
-        String linkend = getAttributeValue( parser,
-                SimplifiedDocbookMarkup.LINKEND_ATTRIBUTE );
+        String linkend = getAttributeValue( parser, SimplifiedDocbookMarkup.LINKEND_ATTRIBUTE );
+
         if ( linkend != null )
         {
             sink.link( "#" + linkend );
@@ -739,6 +751,11 @@
         }
     }
 
+    private boolean ignorable( String name )
+    {
+        return name.equals( SimplifiedDocbookMarkup.ANCHOR_TAG.toString() );
+    }
+
     /**
      * Determines if the given element is a parent element.
      *

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=781702&r1=781701&r2=781702&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 10:25:46 2009
@@ -1422,7 +1422,7 @@
      */
     public void anchor_()
     {
-        // nop
+        comment( "anchor_end" );
     }
 
     /**
@@ -1439,20 +1439,21 @@
             throw new NullPointerException( "Link name cannot be null!" );
         }
 
-        if ( DoxiaUtils.isExternalLink( name ) )
+        if ( DoxiaUtils.isInternalLink( name ) )
         {
-            externalLinkFlag = true;
+            String linkend = name.substring( 1 );
             MutableAttributeSet att = new SimpleAttributeSet();
-            att.addAttribute( SimplifiedDocbookMarkup.URL_ATTRIBUTE, HtmlTools.escapeHTML( name, true ) );
+            att.addAttribute( SimplifiedDocbookMarkup.LINKEND_ATTRIBUTE, HtmlTools.escapeHTML( linkend ) );
 
-            writeStartTag( SimplifiedDocbookMarkup.ULINK_TAG, att );
+            writeStartTag( SimplifiedDocbookMarkup.LINK_TAG, att );
         }
         else
         {
+            externalLinkFlag = true;
             MutableAttributeSet att = new SimpleAttributeSet();
-            att.addAttribute( SimplifiedDocbookMarkup.LINKEND_ATTRIBUTE, HtmlTools.escapeHTML( name ) );
+            att.addAttribute( SimplifiedDocbookMarkup.URL_ATTRIBUTE, HtmlTools.escapeHTML( name, true ) );
 
-            writeStartTag( SimplifiedDocbookMarkup.LINK_TAG, att );
+            writeStartTag( SimplifiedDocbookMarkup.ULINK_TAG, att );
         }
     }
 

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=781702&r1=781701&r2=781702&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 10:25:46 2009
@@ -27,6 +27,7 @@
 import org.apache.maven.doxia.sink.AbstractSinkTest;
 import org.apache.maven.doxia.sink.Sink;
 import org.apache.maven.doxia.sink.SinkUtils;
+import org.apache.maven.doxia.util.DoxiaUtils;
 
 /**
  * @author <a href="mailto:jason@maven.org">Jason van Zyl</a>
@@ -191,13 +192,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} */