Delete JS comment delimeters before HTML comment delimeters in scripts.
authorJuriy Zaytsev <kangax@gmail.com>
Tue, 9 Mar 2010 15:02:15 +0000 (10:02 -0500)
committerJuriy Zaytsev <kangax@gmail.com>
Tue, 9 Mar 2010 15:02:15 +0000 (10:02 -0500)
src/htmlminifier.js
tests/index.html

index 26a88b0..bc3db26 100644 (file)
   }
   
   var reStartDelimiter = {
-    'script': /^\s*<!--.*\n?/,
+    // account for js + html comments (e.g.: //<!--)
+    'script': /^\s*(?:\/\/)?\s*<!--.*\n?/,
     'style': /^\s*<!--\s*/
   };
+  var reEndDelimiter = {
+    'script': /\s*(?:\/\/)?\s*-->\s*$/,
+    'style': /\s*-->\s*$/
+  };
   function removeComments(text, tag) {
-    return text.replace(reStartDelimiter[tag], '').replace(/\s*-->\s*$/, '');
+    return text.replace(reStartDelimiter[tag], '').replace(reEndDelimiter[tag], '');
   }
   
   function isOptionalTag(tag) {
index 28efcd6..c0f8e37 100644 (file)
           input = '<script type="text/javascript"> <!--\nalert("-->"); -->\n\n   <\/script>';
           output = '<script type="text/javascript">alert("-->");<\/script>';
           equals(minify(input, { removeCommentsFromCDATA: true }), output);
+          
+          input = '<script> //   <!--   \n  alert(1)   //  --> <\/script>';
+          output = '<script>  alert(1)<\/script>';
+          equals(minify(input, { removeCommentsFromCDATA: true }), output);
         });
         
         test('remove comments from styles', function(){