Browse Source

Remove unnecessary "match anything" test that caused excessive run time on some mixed content
Update HTML5 structural tags test to also verify correctness this regexp and the previous one.

Signed-off-by: unwiredben <combee@techwood.org>

unwiredben 13 years ago
parent
commit
9b297fa877
3 changed files with 12 additions and 6 deletions
  1. 2 2
      src/showdown.js
  2. 5 2
      test/cases/html5-strutural-tags.html
  3. 5 2
      test/cases/html5-strutural-tags.md

+ 2 - 2
src/showdown.js

@@ -259,13 +259,13 @@ var _HashHTMLBlocks = function(text) {
 			\b					// word break
 			\b					// word break
 								// attacklab: hack around khtml/pcre bug...
 								// attacklab: hack around khtml/pcre bug...
 			[^\r]*?				// any number of lines, minimally matching
 			[^\r]*?				// any number of lines, minimally matching
-			.*</\2>				// the matching end tag
+			</\2>				// the matching end tag
 			[ \t]*				// trailing spaces/tabs
 			[ \t]*				// trailing spaces/tabs
 			(?=\n+)				// followed by a newline
 			(?=\n+)				// followed by a newline
 		)						// attacklab: there are sentinel newlines at end of document
 		)						// attacklab: there are sentinel newlines at end of document
 		/gm,function(){...}};
 		/gm,function(){...}};
 	*/
 	*/
-	text = text.replace(/^(<(p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math|style|section|header|footer|nav|article|aside)\b[^\r]*?.*<\/\2>[ \t]*(?=\n+)\n)/gm,hashElement);
+	text = text.replace(/^(<(p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math|style|section|header|footer|nav|article|aside)\b[^\r]*?<\/\2>[ \t]*(?=\n+)\n)/gm,hashElement);
 
 
 	// Special case just for <hr />. It was easier to make a special case than
 	// Special case just for <hr />. It was easier to make a special case than
 	// to make the other regex more complicated.
 	// to make the other regex more complicated.

+ 5 - 2
test/cases/html5-strutural-tags.html

@@ -9,8 +9,11 @@
 
 
 <nav>navigation</nav>
 <nav>navigation</nav>
 
 
-<article>read me</article>
+<article>read
+me</article>
 
 
-<aside>ignore me</aside>
+<aside>
+ignore me
+</aside>
 
 
 <p>the end</p>
 <p>the end</p>

+ 5 - 2
test/cases/html5-strutural-tags.md

@@ -5,7 +5,10 @@ These HTML5 tags should pass through just fine.
 <header>head</header>
 <header>head</header>
 <footer>footsies</footer>
 <footer>footsies</footer>
 <nav>navigation</nav>
 <nav>navigation</nav>
-<article>read me</article>
-<aside>ignore me</aside>
+<article>read
+me</article>
+<aside>
+ignore me
+</aside>
 
 
 the end
 the end