Author: ltheussl
Date: Thu May 28 09:39:34 2009
New Revision: 779509

URL: http://svn.apache.org/viewvc?rev=779509&view=rev
Log:
Move parsing of script tags into XhtmlBaseParser, it can be re-used.

Modified:
    
maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/parser/XhtmlBaseParser.java
    
maven/doxia/doxia/trunk/doxia-modules/doxia-module-xdoc/src/main/java/org/apache/maven/doxia/module/xdoc/XdocParser.java

Modified: 
maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/parser/XhtmlBaseParser.java
URL: 
http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/parser/XhtmlBaseParser.java?rev=779509&r1=779508&r2=779509&view=diff
==============================================================================
--- 
maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/parser/XhtmlBaseParser.java
 (original)
+++ 
maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/parser/XhtmlBaseParser.java
 Thu May 28 09:39:34 2009
@@ -28,6 +28,7 @@
 import javax.swing.text.html.HTML.Tag;
 
 import org.apache.maven.doxia.macro.MacroExecutionException;
+import org.apache.maven.doxia.markup.HtmlMarkup;
 import org.apache.maven.doxia.sink.Sink;
 import org.apache.maven.doxia.sink.SinkEventAttributeSet;
 import org.apache.maven.doxia.sink.SinkEventAttributes;
@@ -47,7 +48,11 @@
  */
 public class XhtmlBaseParser
     extends AbstractXmlParser
+        implements HtmlMarkup
 {
+    /** True if a <script></script> block is read. CDATA sections 
within are handled as rawText. */
+    private boolean scriptBlock;
+
     /** Used to distinguish <a href=""> from <a name="">. */
     private boolean isLink;
 
@@ -245,6 +250,11 @@
         {
             handleImgStart( parser, sink, attribs );
         }
+        else if ( parser.getName().equals( Tag.SCRIPT.toString() ) )
+        {
+            handleUnknown( parser, sink, TAG_TYPE_START );
+            scriptBlock = true;
+        }
         else
         {
             visited = false;
@@ -399,6 +409,12 @@
         {
             sink.sectionTitle5_();
         }
+        else if ( parser.getName().equals( Tag.SCRIPT.toString() ) )
+        {
+            handleUnknown( parser, sink, TAG_TYPE_END );
+
+            scriptBlock = false;
+        }
         else
         {
             visited = false;
@@ -476,6 +492,22 @@
         }
     }
 
+    /** {...@inheritdoc} */
+    protected void handleCdsect( XmlPullParser parser, Sink sink )
+        throws XmlPullParserException
+    {
+        String text = getText( parser );
+
+        if ( isScriptBlock() )
+        {
+            sink.rawText( text );
+        }
+        else
+        {
+            sink.text( text );
+        }
+    }
+
     /**
      * Make sure sections are nested consecutively.
      *
@@ -629,6 +661,18 @@
     }
 
     /**
+     * Checks if we are currently inside a <script> tag.
+     *
+     * @return true if we are currently inside <code>&lt;script&gt;</code> 
tags.
+     *
+     * @since 1.1.1.
+     */
+    protected boolean isScriptBlock()
+    {
+        return this.scriptBlock;
+    }
+
+    /**
      * Checks if the given id is a valid Doxia id and if not, returns a 
transformed one.
      *
      * @param id The id to validate.

Modified: 
maven/doxia/doxia/trunk/doxia-modules/doxia-module-xdoc/src/main/java/org/apache/maven/doxia/module/xdoc/XdocParser.java
URL: 
http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-modules/doxia-module-xdoc/src/main/java/org/apache/maven/doxia/module/xdoc/XdocParser.java?rev=779509&r1=779508&r2=779509&view=diff
==============================================================================
--- 
maven/doxia/doxia/trunk/doxia-modules/doxia-module-xdoc/src/main/java/org/apache/maven/doxia/module/xdoc/XdocParser.java
 (original)
+++ 
maven/doxia/doxia/trunk/doxia-modules/doxia-module-xdoc/src/main/java/org/apache/maven/doxia/module/xdoc/XdocParser.java
 Thu May 28 09:39:34 2009
@@ -58,9 +58,6 @@
     /** The source content of the input reader. Used to pass into macros. */
     private String sourceContent;
 
-    /** True if a &lt;script&gt;&lt;/script&gt; block is read. CDATA sections 
within are handled as rawText. */
-    private boolean scriptBlock;
-
     /** Empty elements don't write a closing tag. */
     private boolean isEmptyElement;
 
@@ -273,11 +270,6 @@
                 }
             }
         }
-        else if ( parser.getName().equals( Tag.SCRIPT.toString() ) )
-        {
-            handleUnknown( parser, sink, TAG_TYPE_START );
-            scriptBlock = true;
-        }
         else if ( !baseStartTag( parser, sink ) )
         {
             if ( isEmptyElement )
@@ -393,12 +385,6 @@
         {
             consecutiveSections( Sink.SECTION_LEVEL_1, sink );
         }
-        else if ( parser.getName().equals( Tag.SCRIPT.toString() ) )
-        {
-            handleUnknown( parser, sink, TAG_TYPE_END );
-
-            scriptBlock = false;
-        }
         else if ( !baseEndTag( parser, sink ) )
         {
             if ( !isEmptyElement )
@@ -411,22 +397,6 @@
     }
 
     /** {...@inheritdoc} */
-    protected void handleCdsect( XmlPullParser parser, Sink sink )
-        throws XmlPullParserException
-    {
-        String text = getText( parser );
-
-        if ( scriptBlock )
-        {
-            sink.rawText( text );
-        }
-        else
-        {
-            sink.text( text );
-        }
-    }
-
-    /** {...@inheritdoc} */
     protected void consecutiveSections( int newLevel, Sink sink )
     {
         closeOpenSections( newLevel, sink );


Reply via email to