You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by rf...@apache.org on 2013/03/31 23:26:22 UTC

svn commit: r1463055 - in /maven/doxia/doxia/trunk: doxia-core/src/main/java/org/apache/maven/doxia/parser/XhtmlBaseParser.java doxia-modules/doxia-module-xdoc/src/test/java/org/apache/maven/doxia/module/xdoc/XdocParserTest.java

Author: rfscholte
Date: Sun Mar 31 21:26:21 2013
New Revision: 1463055

URL: http://svn.apache.org/r1463055
Log:
[DOXIA-449] Xdoc: content of <style> tag in <head> is swallowed 

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/test/java/org/apache/maven/doxia/module/xdoc/XdocParserTest.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=1463055&r1=1463054&r2=1463055&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 Sun Mar 31 21:26:21 2013
@@ -50,7 +50,7 @@ public class XhtmlBaseParser
     extends AbstractXmlParser
         implements HtmlMarkup
 {
-    /** True if a &lt;script&gt;&lt;/script&gt; block is read. CDATA sections within are handled as rawText. */
+    /** True if a &lt;script&gt;&lt;/script&gt; or &lt;style&gt;&lt;/style&gt; block is read. CDATA sections within are handled as rawText. */
     private boolean scriptBlock;
 
     /** Used to distinguish &lt;a href=""&gt; from &lt;a name=""&gt;. */
@@ -531,7 +531,8 @@ public class XhtmlBaseParser
         {
             handleImgStart( parser, sink, attribs );
         }
-        else if ( parser.getName().equals( HtmlMarkup.SCRIPT.toString() ) )
+        else if ( parser.getName().equals( HtmlMarkup.SCRIPT.toString() )
+            || parser.getName().equals( HtmlMarkup.STYLE.toString() ) )
         {
             handleUnknown( parser, sink, TAG_TYPE_START );
             scriptBlock = true;
@@ -690,7 +691,8 @@ public class XhtmlBaseParser
         {
             sink.sectionTitle5_();
         }
-        else if ( parser.getName().equals( HtmlMarkup.SCRIPT.toString() ) )
+        else if ( parser.getName().equals( HtmlMarkup.SCRIPT.toString() )
+            || parser.getName().equals( HtmlMarkup.STYLE.toString() ) )
         {
             handleUnknown( parser, sink, TAG_TYPE_END );
 

Modified: maven/doxia/doxia/trunk/doxia-modules/doxia-module-xdoc/src/test/java/org/apache/maven/doxia/module/xdoc/XdocParserTest.java
URL: http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-modules/doxia-module-xdoc/src/test/java/org/apache/maven/doxia/module/xdoc/XdocParserTest.java?rev=1463055&r1=1463054&r2=1463055&view=diff
==============================================================================
--- maven/doxia/doxia/trunk/doxia-modules/doxia-module-xdoc/src/test/java/org/apache/maven/doxia/module/xdoc/XdocParserTest.java (original)
+++ maven/doxia/doxia/trunk/doxia-modules/doxia-module-xdoc/src/test/java/org/apache/maven/doxia/module/xdoc/XdocParserTest.java Sun Mar 31 21:26:21 2013
@@ -37,6 +37,7 @@ import org.apache.maven.doxia.sink.SinkE
 
 import org.codehaus.plexus.util.FileUtils;
 import org.codehaus.plexus.util.IOUtil;
+import org.junit.Assert;
 
 /**
  * @author <a href="mailto:jason@maven.org">Jason van Zyl</a>
@@ -584,4 +585,33 @@ public class XdocParserTest
         assertEquals( "section1_", it.next().getName() );
         assertFalse( it.hasNext() );
     }
+    
+    public void testStyleWithCData() throws Exception
+    {
+        // DOXIA-449
+        final String text = "<style type=\"text/css\">\n" + 
+        		"<![CDATA[\n" + 
+        		"h2 {\n" + 
+        		"font-size: 50px;\n" + 
+        		"}\n" + 
+        		"]]>\n" + 
+        		"</style>"; 
+        
+        SinkEventTestingSink sink = new SinkEventTestingSink();
+
+        parser.setValidate( false );
+        parser.parse( text, sink );
+        
+        Iterator<SinkEventElement> it = sink.getEventList().iterator();
+        SinkEventElement styleElm = it.next(); 
+        assertEquals( "unknown", styleElm.getName() );
+        assertEquals( "style", styleElm.getArgs()[0] );
+        SinkEventElement cdataElm = it.next(); 
+        assertEquals( "unknown", cdataElm.getName() );
+        assertEquals( "CDATA", cdataElm.getArgs()[0] );
+        SinkEventElement styleElm_ = it.next(); 
+        assertEquals( "unknown", styleElm_.getName() );
+        assertEquals( "style", styleElm_.getArgs()[0] );
+        assertFalse( it.hasNext() );
+    }
 }