diff --git a/syntaxhighlighter.js b/syntaxhighlighter.js index 8a95a8d..e0ebd59 100644 --- a/syntaxhighlighter.js +++ b/syntaxhighlighter.js @@ -1,6 +1,6 @@ ( function($) { var shortcodes = window.syntaxHLcodes || 'sourcecode', - regex = new RegExp( '(?:
\\s*)?(\\[(' + shortcodes + ')[^\\]]*\\][\\s\\S]*?\\[\\/\\2\\])(?:\\s*<\\/pre>)?', 'gi' );
+		regex = new RegExp( '(?:
\\s*)?(\\[(' + shortcodes + ')(?:\\s+[^\\]])*\\][\\s\\S]*?\\[\\/\\2\\])(?:\\s*<\\/pre>)?', 'gi' );
 
 	window.syntaxHLescape = {};
 
diff --git a/syntaxhighlighter_mce-4.js b/syntaxhighlighter_mce-4.js
index cdefb2c..0c23c2e 100644
--- a/syntaxhighlighter_mce-4.js
+++ b/syntaxhighlighter_mce-4.js
@@ -5,7 +5,7 @@
 tinymce.PluginManager.add( 'syntaxhighlighter', function( editor ) {
 	editor.on( 'BeforeSetContent', function( event ) {
 		var shortcodes = window.syntaxHLcodes || 'sourcecode',
-			regex = new RegExp( '(?:

\\s*)?(?:

\\s*)?(\\[(' + shortcodes + ')[^\\]]*\\][\\s\\S]*?\\[\\/\\2\\])(?:\\s*<\\/pre>)?(?:\\s*<\\/p>)?', 'gi' );
+			regex = new RegExp( '(?:

\\s*)?(?:

\\s*)?(\\[(' + shortcodes + ')(?:\\s+[^\\]])*\\][\\s\\S]*?\\[\\/\\2\\])(?:\\s*<\\/pre>)?(?:\\s*<\\/p>)?', 'gi' );
 
 		if ( event.content && event.content.indexOf( '[' ) !== -1 ) {
 			event.content = event.content.replace( regex, function( match, shortcode ) {
diff --git a/syntaxhighlighter_mce.js b/syntaxhighlighter_mce.js
index 6c360ba..1d8bc3f 100644
--- a/syntaxhighlighter_mce.js
+++ b/syntaxhighlighter_mce.js
@@ -39,7 +39,7 @@ if ( typeof syntaxHLcodes == 'undefined' ) {
 		_visualToHtml : function(content) {
 			content = tinymce.trim(content);	
 			// 2 
get converted to \n\n and are needed to preserve the next

- content = content.replace(new RegExp('(

\\s*)?(\\[(' + syntaxHLcodes + ')[^\\]]*\\][\\s\\S]*?\\[\\/\\3\\])(\\s*<\\/pre>)?', 'gi'),
+			content = content.replace(new RegExp('(
\\s*)?(\\[(' + syntaxHLcodes + ')(?:\\s+[^\\]])*\\][\\s\\S]*?\\[\\/\\3\\])(\\s*<\\/pre>)?', 'gi'),
 			function(a) {
 				a = a.replace( /
([\t ])/g, '
<%%KEEPWHITESPACE%%>$1' ); return a + '

'; @@ -51,14 +51,14 @@ if ( typeof syntaxHLcodes == 'undefined' ) { _htmlToVisual : function(content) { content = tinymce.trim(content); - content = content.replace(new RegExp('(

\\s*)?(

\\s*)?(\\[(' + syntaxHLcodes + ')[^\\]]*\\][\\s\\S]*?\\[\\/\\4\\])(\\s*<\\/pre>)?(\\s*<\\/p>)?', 'gi'), '
$3
'); + content = content.replace(new RegExp('(

\\s*)?(

\\s*)?(\\[(' + syntaxHLcodes + ')(?:\\s+[^\\]])*\\][\\s\\S]*?\\[\\/\\4\\])(\\s*<\\/pre>)?(\\s*<\\/p>)?', 'gi'), '
$3
'); content = content.replace(/<\/pre>
/gi,	'\n');
 
 			// Remove anonymous, empty paragraphs.
 			content = content.replace(/

(\s| )*<\/p>/mg, ''); // Look for


in the [tag]s, replace with
- content = content.replace(new RegExp('\\[(' + syntaxHLcodes + ')[^\\]]*\\][\\s\\S]+?\\[\\/\\1\\]', 'gi'), + content = content.replace(new RegExp('\\[(' + syntaxHLcodes + ')(?:\\s+[^\\]])*\\][\\s\\S]+?\\[\\/\\1\\]', 'gi'), function(a) { return a.replace(/
[\r\n]*/g, '
').replace(/<\/?p( [^>]*)?>[\r\n]*/g, '
'); }); @@ -85,7 +85,7 @@ function pre_wpautop2(content) { content = this._pre_wpautop(content); - content = content.replace(new RegExp('\\[(' + syntaxHLcodes + ')[^\\]]*\\][\\s\\S]+?\\[\\/\\1\\]', 'gi'), + content = content.replace(new RegExp('\\[(' + syntaxHLcodes + ')(?:\\s+[^\\]])*\\][\\s\\S]+?\\[\\/\\1\\]', 'gi'), function(a) { return a.replace(/</g, '<').replace(/>/g, '>').replace(/&/g, '&').replace(/<%%KEEPWHITESPACE%%>/g, ''); }); @@ -95,7 +95,7 @@ function pre_wpautop2(content) { function wpautop2(content) { // js htmlspecialchars - content = content.replace(new RegExp('\\[(' + syntaxHLcodes + ')[^\\]]*\\][\\s\\S]+?\\[\\/\\1\\]', 'gi'), + content = content.replace(new RegExp('\\[(' + syntaxHLcodes + ')(?:\\s+[^\\]])*\\][\\s\\S]+?\\[\\/\\1\\]', 'gi'), function(a) { return a.replace(/&/g, '&').replace(//g, '>'); });