diff options
author | kzc <zaxxon2011@gmail.com> | 2015-10-12 00:20:42 -0400 |
---|---|---|
committer | Mihai Bazon <mihai.bazon@gmail.com> | 2015-10-12 10:19:17 +0300 |
commit | 9f1f21b810ba3b996236cc7ef6757657757a007a (patch) | |
tree | 1856b3e7246f2b796ca10696de9c39665904bfb4 | |
parent | a8e67d157e9caa59bbaf47cd6208eaa583853abb (diff) | |
download | tracifyjs-9f1f21b810ba3b996236cc7ef6757657757a007a.tar.gz tracifyjs-9f1f21b810ba3b996236cc7ef6757657757a007a.zip |
Output `-- >` instead of `-->` in expressions. Escape `<!--` and `-->` within string literals.
-rw-r--r-- | lib/output.js | 13 | ||||
-rw-r--r-- | test/compress/html_comments.js | 15 |
2 files changed, 26 insertions, 2 deletions
diff --git a/lib/output.js b/lib/output.js index c15f3b20..8ca0dc06 100644 --- a/lib/output.js +++ b/lib/output.js @@ -127,6 +127,8 @@ function OutputStream(options) { var ret = make_string(str, quote); if (options.inline_script) ret = ret.replace(/<\x2fscript([>\/\t\n\f\r ])/gi, "<\\/script$1"); + ret = ret.replace(/\x3c!--/g, "\\x3c!--"); + ret = ret.replace(/--\x3e/g, "--\\x3e"); return ret; }; @@ -1046,7 +1048,15 @@ function OutputStream(options) { }); DEFPRINT(AST_Binary, function(self, output){ self.left.print(output); - output.space(); + if (self.operator == ">" + && self.left instanceof AST_UnaryPostfix + && self.left.operator == "--") { + // space is mandatory to avoid outputting --> + output.print(" "); + } else { + // the space is optional depending on "beautify" + output.space(); + } output.print(self.operator); if (self.operator == "<" && self.right instanceof AST_UnaryPrefix @@ -1054,7 +1064,6 @@ function OutputStream(options) { && self.right.expression instanceof AST_UnaryPrefix && self.right.expression.operator == "--") { // space is mandatory to avoid outputting <!-- - // http://javascript.spec.whatwg.org/#comment-syntax output.print(" "); } else { // the space is optional depending on "beautify" diff --git a/test/compress/html_comments.js b/test/compress/html_comments.js new file mode 100644 index 00000000..6141980d --- /dev/null +++ b/test/compress/html_comments.js @@ -0,0 +1,15 @@ +html_comment_in_expression: { + input: { + function f(a, b, x, y) { return a < !--b && x-- > y; } + } + expect_exact: "function f(a,b,x,y){return a< !--b&&x-- >y}"; +} + +html_comment_in_string_literal: { + input: { + function f() { return "<!--HTML-->comment in<!--string literal-->"; } + } + expect_exact: 'function f(){return"\\x3c!--HTML--\\x3ecomment in\\x3c!--string literal--\\x3e"}'; +} + + |