Author: vmassol
Date: Fri Jan 18 03:32:27 2008
New Revision: 613132

URL: http://svn.apache.org/viewvc?rev=613132&view=rev
Log:
DOXIA-200: Add a Parser for XWiki

* Add support for parameter values with no name when in compatibility mode 
(e.g. {image:image.jpg})

Modified:
    
maven/sandbox/trunk/doxia/doxia-module-xwiki/src/main/java/org/apache/maven/doxia/module/xwiki/parser/ChildBlocksBuilder.java
    
maven/sandbox/trunk/doxia/doxia-module-xwiki/src/main/java/org/apache/maven/doxia/module/xwiki/parser/FigureBlockParser.java
    
maven/sandbox/trunk/doxia/doxia-module-xwiki/src/main/java/org/apache/maven/doxia/module/xwiki/parser/MacroBlock.java
    
maven/sandbox/trunk/doxia/doxia-module-xwiki/src/main/java/org/apache/maven/doxia/module/xwiki/parser/MacroParser.java
    
maven/sandbox/trunk/doxia/doxia-module-xwiki/src/test/java/org/apache/maven/doxia/module/xwiki/parser/MacroParserTest.java

Modified: 
maven/sandbox/trunk/doxia/doxia-module-xwiki/src/main/java/org/apache/maven/doxia/module/xwiki/parser/ChildBlocksBuilder.java
URL: 
http://svn.apache.org/viewvc/maven/sandbox/trunk/doxia/doxia-module-xwiki/src/main/java/org/apache/maven/doxia/module/xwiki/parser/ChildBlocksBuilder.java?rev=613132&r1=613131&r2=613132&view=diff
==============================================================================
--- 
maven/sandbox/trunk/doxia/doxia-module-xwiki/src/main/java/org/apache/maven/doxia/module/xwiki/parser/ChildBlocksBuilder.java
 (original)
+++ 
maven/sandbox/trunk/doxia/doxia-module-xwiki/src/main/java/org/apache/maven/doxia/module/xwiki/parser/ChildBlocksBuilder.java
 Fri Jan 18 03:32:27 2008
@@ -147,7 +147,7 @@
                     break;
                 case '{':
                     text = addTextBlockIfNecessary( blocks, specialBlocks, 
text );
-                    i = macroParser.parse( input, i + 1, blocks );
+                    i = macroParser.parse( input, i + 1, blocks ) - 2;
                     break;
                 case '\\':
 

Modified: 
maven/sandbox/trunk/doxia/doxia-module-xwiki/src/main/java/org/apache/maven/doxia/module/xwiki/parser/FigureBlockParser.java
URL: 
http://svn.apache.org/viewvc/maven/sandbox/trunk/doxia/doxia-module-xwiki/src/main/java/org/apache/maven/doxia/module/xwiki/parser/FigureBlockParser.java?rev=613132&r1=613131&r2=613132&view=diff
==============================================================================
--- 
maven/sandbox/trunk/doxia/doxia-module-xwiki/src/main/java/org/apache/maven/doxia/module/xwiki/parser/FigureBlockParser.java
 (original)
+++ 
maven/sandbox/trunk/doxia/doxia-module-xwiki/src/main/java/org/apache/maven/doxia/module/xwiki/parser/FigureBlockParser.java
 Fri Jan 18 03:32:27 2008
@@ -25,6 +25,11 @@
 import org.apache.maven.doxia.parser.ParseException;
 import org.apache.maven.doxia.util.ByLineSource;
 
+/**
+ * This parser is left for performance reasons since it's very often that an 
image macro is found on a line by itself.
+ * However note that macros (and thus this image macro) are also parsed by
+ * [EMAIL PROTECTED] org.apache.maven.doxia.module.xwiki.parser.MacroParser} 
when they're inside a paragraph.
+ */
 public class FigureBlockParser
     implements BlockParser
 {

Modified: 
maven/sandbox/trunk/doxia/doxia-module-xwiki/src/main/java/org/apache/maven/doxia/module/xwiki/parser/MacroBlock.java
URL: 
http://svn.apache.org/viewvc/maven/sandbox/trunk/doxia/doxia-module-xwiki/src/main/java/org/apache/maven/doxia/module/xwiki/parser/MacroBlock.java?rev=613132&r1=613131&r2=613132&view=diff
==============================================================================
--- 
maven/sandbox/trunk/doxia/doxia-module-xwiki/src/main/java/org/apache/maven/doxia/module/xwiki/parser/MacroBlock.java
 (original)
+++ 
maven/sandbox/trunk/doxia/doxia-module-xwiki/src/main/java/org/apache/maven/doxia/module/xwiki/parser/MacroBlock.java
 Fri Jan 18 03:32:27 2008
@@ -26,7 +26,8 @@
 
     public void before( Sink sink )
     {
-
+        // TODO: Make sure to generate existing events for some macros like 
for example for the image macro we should
+        // send the same events as the one sent by the FigureBlock block.
     }
 
     public void after( Sink sink )

Modified: 
maven/sandbox/trunk/doxia/doxia-module-xwiki/src/main/java/org/apache/maven/doxia/module/xwiki/parser/MacroParser.java
URL: 
http://svn.apache.org/viewvc/maven/sandbox/trunk/doxia/doxia-module-xwiki/src/main/java/org/apache/maven/doxia/module/xwiki/parser/MacroParser.java?rev=613132&r1=613131&r2=613132&view=diff
==============================================================================
--- 
maven/sandbox/trunk/doxia/doxia-module-xwiki/src/main/java/org/apache/maven/doxia/module/xwiki/parser/MacroParser.java
 (original)
+++ 
maven/sandbox/trunk/doxia/doxia-module-xwiki/src/main/java/org/apache/maven/doxia/module/xwiki/parser/MacroParser.java
 Fri Jan 18 03:32:27 2008
@@ -121,6 +121,20 @@
                     {
                         text.append( c );
                     }
+                    else if (isInCompatibilityMode && state == 
STATE_PARAM_NAME)
+                    {
+                        if ( charAt( input, i ) == '}' )
+                        {
+                            // In compatibility mode, allow a parameter 
without value
+                            i++;
+                            parameters.put( "default", text.toString() );
+                            state = STATE_END;
+                        }
+                        else
+                        {
+                            throw new ParseException( "Character '/' is not 
valid in parameter names" );
+                        }
+                    }
                     else
                     {
                         throw new ParseException( "Invalid position for 
character '/' in Macro" );

Modified: 
maven/sandbox/trunk/doxia/doxia-module-xwiki/src/test/java/org/apache/maven/doxia/module/xwiki/parser/MacroParserTest.java
URL: 
http://svn.apache.org/viewvc/maven/sandbox/trunk/doxia/doxia-module-xwiki/src/test/java/org/apache/maven/doxia/module/xwiki/parser/MacroParserTest.java?rev=613132&r1=613131&r2=613132&view=diff
==============================================================================
--- 
maven/sandbox/trunk/doxia/doxia-module-xwiki/src/test/java/org/apache/maven/doxia/module/xwiki/parser/MacroParserTest.java
 (original)
+++ 
maven/sandbox/trunk/doxia/doxia-module-xwiki/src/test/java/org/apache/maven/doxia/module/xwiki/parser/MacroParserTest.java
 Fri Jan 18 03:32:27 2008
@@ -136,4 +136,21 @@
         assertEquals( "", macroBlock.getContent() );
         assertEquals( 0, macroBlock.getParameters().size() );
     }
+
+    public void testParseOldStyleMacroWithDefaultParameterWithNoValue()
+        throws Exception
+    {
+        parser.setCompatibilityMode( true );
+        List blocks = new ArrayList();
+        String macro = "{macro:value/}";
+        int pos = parser.parse( macro + " ...", 1, blocks );
+
+        assertEquals( macro.length(), pos );
+        assertEquals( 1, blocks.size() );
+        MacroBlock macroBlock = (MacroBlock) blocks.get( 0 );
+        assertEquals( "macro", macroBlock.getName() );
+        assertEquals( "", macroBlock.getContent() );
+        assertEquals( 1, macroBlock.getParameters().size() );
+        assertEquals( "value", macroBlock.getParameters().get( "default" ) );
+    }
 }


Reply via email to