Author: jvanzyl
Date: Sun Nov 27 06:45:18 2005
New Revision: 349240

URL: http://svn.apache.org/viewcvs?rev=349240&view=rev
Log:
o some more code submitted by Juan F. Codagnone, which I'm using in a 
confluence parser.

Added:
    
maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/module/common/
    
maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/module/common/ByLineReaderSource.java
   (with props)
    
maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/module/common/ByLineSource.java
   (with props)

Added: 
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=349240&view=auto
==============================================================================
--- 
maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/module/common/ByLineReaderSource.java
 (added)
+++ 
maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/module/common/ByLineReaderSource.java
 Sun Nov 27 06:45:18 2005
@@ -0,0 +1,158 @@
+/*
+ * Originaly from org.apache.doxia.module.apt.AptReaderSource. It was modified
+ * to get unget support 
+ */
+package org.apache.maven.doxia.module.common;
+
+import java.io.IOException;
+import java.io.LineNumberReader;
+import java.io.Reader;
+
+import org.apache.maven.doxia.module.apt.AptParseException;
+
+/**
+ * [EMAIL PROTECTED] org.apache.maven.doxia.module.common.ByLineSource} 
default implementation
+ */
+public class ByLineReaderSource implements ByLineSource
+{
+    /**
+     * reader
+     */
+    private LineNumberReader reader;
+    /**
+     * current line number
+     */
+    private int lineNumber;
+
+    /**
+     * holds the last line returned by getNextLine()
+     */
+    private String lastLine;
+
+    /**
+     * <code>true</code> if ungetLine() was called and no getNextLine() was
+     * called
+     */
+    private boolean ungetted = false;
+
+    /**
+     * Creates the ByLineReaderSource.
+     *
+     * @param in real source :)
+     */
+    public ByLineReaderSource( final Reader in )
+    {
+        reader = new LineNumberReader( in );
+
+        lineNumber = -1;
+    }
+
+    /**
+     * @see ByLineSource#getNextLine()
+     */
+    public final String getNextLine() throws AptParseException
+    {
+        if ( reader == null )
+        {
+            return null;
+        }
+
+        if ( ungetted )
+        {
+            ungetted = false;
+            return lastLine;
+        }
+
+        String line;
+
+        try
+        {
+            line = reader.readLine();
+            if ( line == null )
+            {
+                reader.close();
+                reader = null;
+            }
+            else
+            {
+                lineNumber = reader.getLineNumber();
+            }
+        }
+        catch ( IOException e )
+        {
+            throw new AptParseException( e );
+        }
+
+        lastLine = line;
+
+        return line;
+    }
+
+    /**
+     * @see ByLineSource#getName()
+     */
+    public final String getName()
+    {
+        return "";
+    }
+
+    /**
+     * @see ByLineSource#getLineNumber()
+     */
+    public final int getLineNumber()
+    {
+        return lineNumber;
+    }
+
+    /**
+     * @see ByLineSource#close()
+     */
+    public final void close()
+    {
+        if ( reader != null )
+        {
+            try
+            {
+                reader.close();
+            }
+            catch ( IOException ignored )
+            {
+                // ignore
+            }
+        }
+        reader = null;
+    }
+
+    /**
+     * @see ByLineSource#ungetLine()
+     */
+    public final void ungetLine() throws IllegalStateException
+    {
+        if ( ungetted )
+        {
+            throw new IllegalStateException(
+                "we support only one level of ungetLine()" );
+        }
+        ungetted = true;
+    }
+
+    /**
+     * @see ByLineSource#unget(String)
+     */
+    public final void unget( final String s ) throws IllegalStateException
+    {
+        if ( s == null )
+        {
+            throw new IllegalArgumentException( "argument can't be null" );
+        }
+        if ( s.length() == 0 )
+        {
+            // dont do anything
+        }
+        else
+        {
+            ungetLine();
+            lastLine = s;
+        }
+    }
+}
\ No newline at end of file

Propchange: 
maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/module/common/ByLineReaderSource.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/module/common/ByLineReaderSource.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: 
maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/module/common/ByLineSource.java
URL: 
http://svn.apache.org/viewcvs/maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/module/common/ByLineSource.java?rev=349240&view=auto
==============================================================================
--- 
maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/module/common/ByLineSource.java
 (added)
+++ 
maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/module/common/ByLineSource.java
 Sun Nov 27 06:45:18 2005
@@ -0,0 +1,48 @@
+package org.apache.maven.doxia.module.common;
+
+import org.apache.maven.doxia.parser.ParseException;
+
+/**
+ * The token are the new lines :)
+ *
+ * @author Juan F. Codagnone
+ * @since Nov 4, 2005
+ */
+public interface ByLineSource
+{
+    /**
+     * @return the next line. <code>null</code> if we reached the end.
+     * @throws ParseException on I/O error
+     */
+    String getNextLine() throws ParseException;
+
+    /**
+     * @return the name of the input. could be the filename for example
+     */
+    String getName();
+
+    /**
+     * @return the current line number
+     */
+    int getLineNumber();
+
+    /**
+     * @throws IllegalStateException if the ungetLine/unget is called more than
+     *                               one time without calling getNextLine()
+     */
+    void ungetLine() throws IllegalStateException;
+
+
+    /**
+     * @param s some text to push back to the parser
+     * @throws IllegalStateException if the ungetLine/unget is called more than
+     *                               one time without calling getNextLine()
+     */
+    void unget( String s ) throws IllegalStateException;
+
+
+    /**
+     * close the source ...
+     */
+    void close();
+}

Propchange: 
maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/module/common/ByLineSource.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/module/common/ByLineSource.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"


Reply via email to