From 9c98eead07d7e5b41dbd9767e7dcca03f352332f Mon Sep 17 00:00:00 2001 From: alexlamsl Date: Sun, 3 Jul 2016 14:28:27 +0800 Subject: [PATCH] fix interactions between minifyJS and ignoreCustomFragments fixes #679 --- src/htmlminifier.js | 11 ++++++++++- tests/minifier.js | 40 +++++++++++++++++++++------------------- 2 files changed, 31 insertions(+), 20 deletions(-) diff --git a/src/htmlminifier.js b/src/htmlminifier.js index 4bf2908..f25b1d0 100644 --- a/src/htmlminifier.js +++ b/src/htmlminifier.js @@ -722,7 +722,7 @@ function processOptions(options) { function uniqueId(value) { var id; do { - id = Math.random().toString(36).slice(2); + id = Math.random().toString(36).replace(/^0\.[0-9]*/, ''); } while (~value.indexOf(id)); return id; } @@ -869,6 +869,15 @@ function minify(value, options, partialMarkup) { }); }; } + var minifyJS = options.minifyJS; + if (minifyJS) { + var pattern = new RegExp('(\\\\t|)' + uidAttr + '([0-9]+)(\\\\t|)', 'g'); + options.minifyJS = function(text, inline) { + return minifyJS(text, inline).replace(pattern, function(match, prefix, index, suffix) { + return (prefix && '\t') + uidAttr + index + (suffix && '\t'); + }); + }; + } } var token = uidAttr + ignoredCustomMarkupChunks.length; ignoredCustomMarkupChunks.push(match); diff --git a/tests/minifier.js b/tests/minifier.js index df8bcea..5df325c 100644 --- a/tests/minifier.js +++ b/tests/minifier.js @@ -1864,95 +1864,97 @@ QUnit.test('minification of scripts with different mimetypes', function(assert) input = ''; output = ''; - assert.equal(minify(input, { minifyJS: true }), output); input = ''; output = ''; - assert.equal(minify(input, { minifyJS: true }), output); input = ''; output = ''; - assert.equal(minify(input, { minifyJS: true }), output); input = ''; output = ''; - assert.equal(minify(input, { minifyJS: true }), output); input = ''; output = ''; - assert.equal(minify(input, { minifyJS: true }), output); input = ''; - assert.equal(minify(input, { minifyJS: true }), input); input = ''; + assert.equal(minify(input, { minifyJS: true }), input); + input = ''; assert.equal(minify(input, { minifyJS: true }), input); + + input = ''; + output = ''; + assert.equal(minify(input, { minifyJS: true }), output); + + input = ''; + output = ''; + assert.equal(minify(input, { minifyJS: true }), output); }); QUnit.test('event minification', function(assert) { var input, output; input = '
'; - assert.equal(minify(input, { minifyJS: true }), input); input = '
'; output = '
'; - assert.equal(minify(input, { minifyJS: true }), output); input = 'test'; output = 'test'; - assert.equal(minify(input, { minifyJS: true }), output); input = ' foobar'; output = ' foobar'; - assert.equal(minify(input, { minifyJS: { mangle: false } }), output); assert.equal(minify(input, { minifyJS: { mangle: false }, quoteCharacter: '\'' }), output); input = ' foobar'; output = ' foobar'; - assert.equal(minify(input, { minifyJS: { mangle: false }, quoteCharacter: '"' }), output); input = ''; output = ''; - assert.equal(minify(input, { minifyJS: true }), output); assert.equal(minify(input, { minifyJS: true, quoteCharacter: '\'' }), output); input = ''; output = ''; - assert.equal(minify(input, { minifyJS: true, quoteCharacter: '"' }), output); input = ''; output = ''; - assert.equal(minify(input, { minifyJS: true }), output); input = ''; output = ''; - assert.equal(minify(input, { minifyJS: true }), output); assert.equal(minify(input, { minifyJS: true, customEventAttributes: [] }), input); - output = ''; - assert.equal(minify(input, { minifyJS: true, customEventAttributes: [/^ng-/] }), output); - output = ''; - assert.equal(minify(input, { minifyJS: true, customEventAttributes: [/^on/, /^ng-/] }), output); + + input = '
'; + assert.equal(minify(input, { minifyJS: true }), input); + + input = '
'; + output = '
'; + assert.equal(minify(input, { minifyJS: true }), output); + + input = '
'; + output = '
")\'>
'; + assert.equal(minify(input, { minifyJS: true }), output); }); QUnit.test('escaping closing script tag', function(assert) { -- 2.34.1