Author: jvanzyl Date: Sun Nov 27 13:38:30 2005 New Revision: 349320 URL: http://svn.apache.org/viewcvs?rev=349320&view=rev Log: o changing the accept method to take the source so that we can do some primitive look ahead as i prefer to do this then embed the parsers in one another (like the twiki parser). in most cases you can peek ahead a line and figure out what you have and go from there.
Modified: maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/module/common/ByLineReaderSource.java maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/module/confluence/ConfluenceParser.java maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/module/confluence/parser/BlockParser.java maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/module/confluence/parser/HorizontalRuleBlockParser.java maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/module/confluence/parser/ParagraphBlockParser.java maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/module/confluence/parser/SectionBlockParser.java maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/module/confluence/parser/VerbatimBlockParser.java maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/module/confluence/parser/list/ListBlockParser.java maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/module/confluence/parser/table/TableBlockParser.java Modified: maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/module/common/ByLineReaderSource.java URL: http://svn.apache.org/viewcvs/maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/module/common/ByLineReaderSource.java?rev=349320&r1=349319&r2=349320&view=diff ============================================================================== --- maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/module/common/ByLineReaderSource.java (original) +++ maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/module/common/ByLineReaderSource.java Sun Nov 27 13:38:30 2005 @@ -130,8 +130,7 @@ { if ( ungetted ) { - throw new IllegalStateException( - "we support only one level of ungetLine()" ); + throw new IllegalStateException( "we support only one level of ungetLine()" ); } ungetted = true; } Modified: maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/module/confluence/ConfluenceParser.java URL: http://svn.apache.org/viewcvs/maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/module/confluence/ConfluenceParser.java?rev=349320&r1=349319&r2=349320&view=diff ============================================================================== --- maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/module/confluence/ConfluenceParser.java (original) +++ maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/module/confluence/ConfluenceParser.java Sun Nov 27 13:38:30 2005 @@ -89,7 +89,7 @@ continue; } - if ( parser.accept( line ) ) + if ( parser.accept( line, source ) ) { /* System.out.println( "------------------------------------------------------------" ); Modified: maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/module/confluence/parser/BlockParser.java URL: http://svn.apache.org/viewcvs/maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/module/confluence/parser/BlockParser.java?rev=349320&r1=349319&r2=349320&view=diff ============================================================================== --- maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/module/confluence/parser/BlockParser.java (original) +++ maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/module/confluence/parser/BlockParser.java Sun Nov 27 13:38:30 2005 @@ -22,7 +22,7 @@ public interface BlockParser { - boolean accept( String line ); + boolean accept( String line, ByLineSource source ); Block visit( String line, ByLineSource source ) throws ParseException; } Modified: maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/module/confluence/parser/HorizontalRuleBlockParser.java URL: http://svn.apache.org/viewcvs/maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/module/confluence/parser/HorizontalRuleBlockParser.java?rev=349320&r1=349319&r2=349320&view=diff ============================================================================== --- maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/module/confluence/parser/HorizontalRuleBlockParser.java (original) +++ maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/module/confluence/parser/HorizontalRuleBlockParser.java Sun Nov 27 13:38:30 2005 @@ -16,16 +16,13 @@ * limitations under the License. */ -import java.util.regex.Matcher; -import java.util.regex.Pattern; - import org.apache.maven.doxia.module.common.ByLineSource; import org.apache.maven.doxia.parser.ParseException; public class HorizontalRuleBlockParser implements BlockParser { - public boolean accept( String line ) + public boolean accept( String line, ByLineSource source ) { return line.startsWith( "----" ); } Modified: maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/module/confluence/parser/ParagraphBlockParser.java URL: http://svn.apache.org/viewcvs/maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/module/confluence/parser/ParagraphBlockParser.java?rev=349320&r1=349319&r2=349320&view=diff ============================================================================== --- maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/module/confluence/parser/ParagraphBlockParser.java (original) +++ maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/module/confluence/parser/ParagraphBlockParser.java Sun Nov 27 13:38:30 2005 @@ -27,7 +27,7 @@ public class ParagraphBlockParser implements BlockParser { - public boolean accept( String line ) + public boolean accept( String line, ByLineSource source ) { return true; } @@ -125,6 +125,8 @@ break; case '}': + + System.out.println( "line = " + line ); if ( line.charAt( i + 1 ) == '}' ) { Modified: maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/module/confluence/parser/SectionBlockParser.java URL: http://svn.apache.org/viewcvs/maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/module/confluence/parser/SectionBlockParser.java?rev=349320&r1=349319&r2=349320&view=diff ============================================================================== --- maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/module/confluence/parser/SectionBlockParser.java (original) +++ maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/module/confluence/parser/SectionBlockParser.java Sun Nov 27 13:38:30 2005 @@ -8,12 +8,12 @@ /** * @author <a href="mailto:[EMAIL PROTECTED]">Jason van Zyl</a> - * @version $Id:$ + * @version $Id$ */ public class SectionBlockParser implements BlockParser { - public boolean accept( String line ) + public boolean accept( String line, ByLineSource source ) { if ( line.startsWith( "h1." ) ) { Modified: maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/module/confluence/parser/VerbatimBlockParser.java URL: http://svn.apache.org/viewcvs/maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/module/confluence/parser/VerbatimBlockParser.java?rev=349320&r1=349319&r2=349320&view=diff ============================================================================== --- maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/module/confluence/parser/VerbatimBlockParser.java (original) +++ maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/module/confluence/parser/VerbatimBlockParser.java Sun Nov 27 13:38:30 2005 @@ -15,7 +15,7 @@ { static String LS = System.getProperty( "line.separator" ); - public boolean accept( String line ) + public boolean accept( String line, ByLineSource source ) { if ( line.startsWith( "{code}" ) || line.startsWith( "{noformat}" ) ) { @@ -40,7 +40,6 @@ // TODO text.append( line ).append( LS ); } - return new VerbatimBlock( text.toString() ); } Modified: maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/module/confluence/parser/list/ListBlockParser.java URL: http://svn.apache.org/viewcvs/maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/module/confluence/parser/list/ListBlockParser.java?rev=349320&r1=349319&r2=349320&view=diff ============================================================================== --- maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/module/confluence/parser/list/ListBlockParser.java (original) +++ maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/module/confluence/parser/list/ListBlockParser.java Sun Nov 27 13:38:30 2005 @@ -32,9 +32,22 @@ public static int NUMBERED_LIST = 1; - public boolean accept( String line ) + public boolean accept( String line, ByLineSource source ) { - if ( isList( line ) ) + String nextLine = null; + + try + { + nextLine = source.getNextLine(); + + source.ungetLine(); + } + catch ( ParseException e ) + { + // do nothing + } + + if ( isList( line ) && isList( nextLine ) ) { return true; } @@ -51,7 +64,7 @@ do { - if ( !accept( l ) ) + if ( !isList( l ) ) { break; } @@ -70,11 +83,6 @@ } } while ( ( l = source.getNextLine() ) != null ); - - if ( l != null ) - { - source.ungetLine(); - } return treeListBuilder.getBlock(); } Modified: maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/module/confluence/parser/table/TableBlockParser.java URL: http://svn.apache.org/viewcvs/maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/module/confluence/parser/table/TableBlockParser.java?rev=349320&r1=349319&r2=349320&view=diff ============================================================================== --- maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/module/confluence/parser/table/TableBlockParser.java (original) +++ maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/module/confluence/parser/table/TableBlockParser.java Sun Nov 27 13:38:30 2005 @@ -18,8 +18,6 @@ import java.util.ArrayList; import java.util.List; -import java.util.regex.Matcher; -import java.util.regex.Pattern; import org.apache.maven.doxia.module.common.ByLineSource; import org.apache.maven.doxia.module.confluence.parser.BlockParser; @@ -39,7 +37,7 @@ public class TableBlockParser implements BlockParser { - public boolean accept( String line ) + public boolean accept( String line, ByLineSource source ) { return line.startsWith( "|" ); } @@ -47,7 +45,7 @@ public Block visit( String line, ByLineSource source ) throws ParseException { - if ( !accept( line ) ) + if ( !accept( line, source ) ) { throw new IllegalAccessError( "call accept before this ;)" ); } @@ -95,7 +93,7 @@ rows.add( new TableRowBlock( cells ) ); } - while ( ( l = source.getNextLine() ) != null && accept( l ) ); + while ( ( l = source.getNextLine() ) != null && accept( l, source ) ); assert rows.size() >= 1;