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;