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/12/16 21:26:03 UTC

svn commit: r604694 - in /maven/doxia/doxia/trunk/doxia-modules/doxia-module-twiki/src: main/java/org/apache/maven/doxia/module/twiki/parser/ test/java/org/apache/maven/doxia/module/twiki/parser/

Author: ltheussl
Date: Sun Dec 16 12:26:02 2007
New Revision: 604694

URL: http://svn.apache.org/viewvc?rev=604694&view=rev
Log:
[DOXIA-198] Support for images with links
Submitted by: Juan F. Codagnone, Christian Nardi

Modified:
    maven/doxia/doxia/trunk/doxia-modules/doxia-module-twiki/src/main/java/org/apache/maven/doxia/module/twiki/parser/LinkBlock.java
    maven/doxia/doxia/trunk/doxia-modules/doxia-module-twiki/src/main/java/org/apache/maven/doxia/module/twiki/parser/TextParser.java
    maven/doxia/doxia/trunk/doxia-modules/doxia-module-twiki/src/main/java/org/apache/maven/doxia/module/twiki/parser/WikiWordBlock.java
    maven/doxia/doxia/trunk/doxia-modules/doxia-module-twiki/src/test/java/org/apache/maven/doxia/module/twiki/parser/WordsTest.java

Modified: maven/doxia/doxia/trunk/doxia-modules/doxia-module-twiki/src/main/java/org/apache/maven/doxia/module/twiki/parser/LinkBlock.java
URL: http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-modules/doxia-module-twiki/src/main/java/org/apache/maven/doxia/module/twiki/parser/LinkBlock.java?rev=604694&r1=604693&r2=604694&view=diff
==============================================================================
--- maven/doxia/doxia/trunk/doxia-modules/doxia-module-twiki/src/main/java/org/apache/maven/doxia/module/twiki/parser/LinkBlock.java (original)
+++ maven/doxia/doxia/trunk/doxia-modules/doxia-module-twiki/src/main/java/org/apache/maven/doxia/module/twiki/parser/LinkBlock.java Sun Dec 16 12:26:02 2007
@@ -37,24 +37,36 @@
     /**
      * link text
      */
-    private final String text;
+    private final Block content;
 
     /**
      * Creates the LinkBlock.
      *
+     * @param reference reference anchor 
+     * @param text text to display
+     * @deprecated
+     */
+    public LinkBlock( final String reference, final String text ) 
+    {
+        this( reference, new TextBlock( text ) );
+    }
+    
+    /**
+     * Creates the LinkBlock.
+     *
      * @param reference reference anchor
-     * @param text      text to show
+     * @param content block with the displayed content
      * @throws IllegalArgumentException if any argument is <code>null</code>
      */
-    public LinkBlock( final String reference, final String text )
+    public LinkBlock( final String reference, final Block content )
         throws IllegalArgumentException
     {
-        if ( reference == null || text == null )
+        if ( reference == null || content == null )
         {
             throw new IllegalArgumentException( "arguments can't be null" );
         }
         this.reference = reference;
-        this.text = text;
+        this.content = content;
     }
 
     /**
@@ -63,7 +75,7 @@
     public final void traverse( final Sink sink )
     {
         sink.link( reference );
-        sink.text( text );
+        content.traverse( sink );
         sink.link_();
 
     }
@@ -84,7 +96,7 @@
         {
             final LinkBlock l = (LinkBlock) obj;
             ret = reference.equals( l.reference )
-                && text.equals( l.text );
+                && content.equals( l.content );
         }
 
         return ret;
@@ -100,7 +112,7 @@
         final int magic2 = 37;
 
         return magic1 + magic2 * reference.hashCode()
-            + magic2 * text.hashCode();
+            + magic2 * content.hashCode();
     }
 
 }

Modified: maven/doxia/doxia/trunk/doxia-modules/doxia-module-twiki/src/main/java/org/apache/maven/doxia/module/twiki/parser/TextParser.java
URL: http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-modules/doxia-module-twiki/src/main/java/org/apache/maven/doxia/module/twiki/parser/TextParser.java?rev=604694&r1=604693&r2=604694&view=diff
==============================================================================
--- maven/doxia/doxia/trunk/doxia-modules/doxia-module-twiki/src/main/java/org/apache/maven/doxia/module/twiki/parser/TextParser.java (original)
+++ maven/doxia/doxia/trunk/doxia-modules/doxia-module-twiki/src/main/java/org/apache/maven/doxia/module/twiki/parser/TextParser.java Sun Dec 16 12:26:02 2007
@@ -212,9 +212,19 @@
      */
     private Block createLink( final String link, final String showText ) 
     {
+        final Block content;
+        if( URL_PATTERN.matcher( showText ).matches() && IMAGE_PATTERN.matcher( showText ).matches() ) 
+        {
+            content = new ImageBlock( showText );
+        }
+        else 
+        {
+            content = new TextBlock( showText );
+        }
+        
         if ( URL_PATTERN.matcher( link ).matches() ) 
         {
-            return new LinkBlock( link, showText );
+            return new LinkBlock( link, content );
         }
         else
         {
@@ -228,7 +238,7 @@
                 sb.append( s.substring( 0, 1 ).toUpperCase() );
                 sb.append( s.substring( 1 ) );
             }
-            return new WikiWordBlock( sb.toString(), showText, wikiWordLinkResolver );
+            return new WikiWordBlock( sb.toString(), content, wikiWordLinkResolver );
         }
     }
 

Modified: maven/doxia/doxia/trunk/doxia-modules/doxia-module-twiki/src/main/java/org/apache/maven/doxia/module/twiki/parser/WikiWordBlock.java
URL: http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-modules/doxia-module-twiki/src/main/java/org/apache/maven/doxia/module/twiki/parser/WikiWordBlock.java?rev=604694&r1=604693&r2=604694&view=diff
==============================================================================
--- maven/doxia/doxia/trunk/doxia-modules/doxia-module-twiki/src/main/java/org/apache/maven/doxia/module/twiki/parser/WikiWordBlock.java (original)
+++ maven/doxia/doxia/trunk/doxia-modules/doxia-module-twiki/src/main/java/org/apache/maven/doxia/module/twiki/parser/WikiWordBlock.java Sun Dec 16 12:26:02 2007
@@ -35,14 +35,16 @@
      */
     private final String wikiword;
     /**
-     * text to show in the wiki word link
+     * content to show in the wiki word link
      */
-    private final String showText;
+    private final Block content;
     /**
      * Resolves WikiWord links
      */
     private final WikiWordLinkResolver wikiWordLinkResolver;
 
+    
+    
     /**
      * @see #WikiWordBlock(String, String)
      * @param aWikiword the wikiWord
@@ -61,16 +63,31 @@
      * @param aText text to show in the wiki link
      * @param resolver responsible of resolving the link to the wikiWord 
      * @throws IllegalArgumentException if the wikiword is <code>null</code>
+     * @deprecated
      */
     public WikiWordBlock( final String aWikiword, final String aText , 
             final WikiWordLinkResolver resolver )
     {
-        if ( aWikiword == null || aText == null || resolver == null )
+        this( aWikiword, new TextBlock( aText ), resolver );
+    }
+    
+    /**
+     * Creates the WikiWordBlock.
+     *
+     * @param aWikiword the wiki word
+     * @param aText text to show in the wiki link
+     * @param resolver responsible of resolving the link to the wikiWord 
+     * @throws IllegalArgumentException if the wikiword is <code>null</code>
+     */
+    public WikiWordBlock( final String aWikiword, final Block content , 
+            final WikiWordLinkResolver resolver )
+    {
+        if ( aWikiword == null || content == null || resolver == null )
         {
             throw new IllegalArgumentException( "arguments can't be null" );
         }
         this.wikiword = aWikiword;
-        this.showText = aText;
+        this.content = content;
         this.wikiWordLinkResolver = resolver;
     }
 
@@ -81,7 +98,7 @@
     public final void traverse( final Sink sink )
     {
         sink.link( wikiWordLinkResolver.resolveLink( wikiword ) );
-        sink.text( showText );
+        content.traverse( sink );
         sink.link_();
     }
 
@@ -104,7 +121,7 @@
         {
             final WikiWordBlock w = (WikiWordBlock) obj;
             ret = wikiword.equals( w.wikiword )
-                && showText.equals( w.showText );
+                && content.equals( w.content );
         }
 
         return ret;
@@ -121,6 +138,6 @@
         final int magic2 = 37;
 
         return magic1 + magic2 * wikiword.hashCode()
-            + magic2 * showText.hashCode();
+            + magic2 * content.hashCode();
     }
 }

Modified: maven/doxia/doxia/trunk/doxia-modules/doxia-module-twiki/src/test/java/org/apache/maven/doxia/module/twiki/parser/WordsTest.java
URL: http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-modules/doxia-module-twiki/src/test/java/org/apache/maven/doxia/module/twiki/parser/WordsTest.java?rev=604694&r1=604693&r2=604694&view=diff
==============================================================================
--- maven/doxia/doxia/trunk/doxia-modules/doxia-module-twiki/src/test/java/org/apache/maven/doxia/module/twiki/parser/WordsTest.java (original)
+++ maven/doxia/doxia/trunk/doxia-modules/doxia-module-twiki/src/test/java/org/apache/maven/doxia/module/twiki/parser/WordsTest.java Sun Dec 16 12:26:02 2007
@@ -322,10 +322,24 @@
         assertTrue( Arrays.equals( expected, blocks ) );
     }
     
-    /**
-     * unit test
-     */
+    /** unit test */
     public final void testAutomaticImage()
+    {
+        Block [] blocks, expected;
+
+        expected = new Block[]{
+            new LinkBlock( "http://twiki.org", 
+                    new ImageBlock( "http://twiki.org/logo.png" )),
+        };
+        blocks = (Block[]) textParser.parse( 
+            "[[http://twiki.org][http://twiki.org/logo.png]]").toArray( TOARRAY ); 
+        assertTrue( Arrays.equals( expected, blocks ) );
+    }
+    
+
+    
+    /** unit test */
+    public final void testLinkImage()
     {
         Block [] blocks, expected;