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:08:17 UTC

svn commit: r604684 - in /maven/doxia/doxia/trunk/doxia-modules/doxia-module-twiki/src: main/java/org/apache/maven/doxia/module/twiki/parser/TextParser.java test/java/org/apache/maven/doxia/module/twiki/parser/WordsTest.java

Author: ltheussl
Date: Sun Dec 16 12:08:16 2007
New Revision: 604684

URL: http://svn.apache.org/viewvc?rev=604684&view=rev
Log:
[DOXIA-193] forced url links where parsed as WikiWords 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/TextParser.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/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=604684&r1=604683&r2=604684&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:08:16 2007
@@ -182,23 +182,43 @@
             }
             else
             {
-                final StringTokenizer tokenizer =
-                    new StringTokenizer( showText );
-                final StringBuffer sb = new StringBuffer();
+                ret.addAll( parse( line.substring( 0, 
+                        forcedLinkMatcher.start() ) ) );
+                ret.add( createLink( showText, showText ) );
+                ret.addAll( parse( line.substring( forcedLinkMatcher.end(), 
+                        line.length() ) ) );
+            }
+        }
+    }
 
-                while ( tokenizer.hasMoreElements() )
-                {
-                    final String s = tokenizer.nextToken();
-                    sb.append( s.substring( 0, 1 ).toUpperCase() );
-                    sb.append( s.substring( 1 ) );
-                }
+    /**
+     * Decides between a WikiWordBlock or a a LinkBlock
+     * @param link the link text
+     * @param showText the show text.
+     * @return either a WikiWordBlock or a LinkBlock
+     */
+    private Block createLink( final String link, final String showText ) 
+    {
+        if ( URL_PATTERN.matcher( showText ).matches() ) 
+        {
+            return new LinkBlock( showText, showText );
+        }
+        else
+        {
+            final StringTokenizer tokenizer =
+                new StringTokenizer( showText );
+            final StringBuffer sb = new StringBuffer();
 
-                ret.addAll( parse( line.substring( 0, forcedLinkMatcher.start() ) ) );
-                ret.add( new WikiWordBlock( sb.toString(), showText ) );
-                ret.addAll( parse( line.substring( forcedLinkMatcher.end(), line.length() ) ) );
+            while ( tokenizer.hasMoreElements() )
+            {
+                final String s = tokenizer.nextToken();
+                sb.append( s.substring( 0, 1 ).toUpperCase() );
+                sb.append( s.substring( 1 ) );
             }
+            return new WikiWordBlock( sb.toString(), showText );
         }
     }
+
 
     /**
      * Parses a wiki word

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=604684&r1=604683&r2=604684&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:08:16 2007
@@ -198,6 +198,14 @@
         };
         blocks = (Block[]) textParser.parse( "foo[[wiki syntax]]bar" ).toArray( TOARRAY );
         assertTrue( Arrays.equals( expected, blocks ) );
+        
+        expected = new Block[]{
+                new TextBlock( "foo" ),
+                new LinkBlock( "http://twiki.com", "http://twiki.com" ),
+                new TextBlock( "bar" ),
+            };
+            blocks = (Block[]) textParser.parse( "foo[[http://twiki.com]]bar" ).toArray( TOARRAY );
+            assertTrue( Arrays.equals( expected, blocks ) );
     }
 
     /**