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 ) );
}
/**