aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoralexlamsl <alexlamsl@gmail.com>2017-02-18 19:30:33 +0800
committeralexlamsl <alexlamsl@gmail.com>2017-02-21 13:29:58 +0800
commit09f9ae2de9fb2a328e088ab82ad1e49731c971fb (patch)
treeca68b24b4a09542d4800547a14b13f4b96ead90c
parent7e6331bb397e1dec0a4e15233a2afca3a4e9daff (diff)
downloadtracifyjs-09f9ae2de9fb2a328e088ab82ad1e49731c971fb.tar.gz
tracifyjs-09f9ae2de9fb2a328e088ab82ad1e49731c971fb.zip
improve `--beautify bracketize`
reduce whitespaces from if-else statements fixes #1482 closes #1483
-rw-r--r--lib/output.js5
-rw-r--r--test/input/issue-1482/bracketize.js73
-rw-r--r--test/input/issue-1482/default.js17
-rw-r--r--test/input/issue-1482/input.js12
-rw-r--r--test/mocha/cli.js21
5 files changed, 127 insertions, 1 deletions
diff --git a/lib/output.js b/lib/output.js
index b6f0a873..4f576c96 100644
--- a/lib/output.js
+++ b/lib/output.js
@@ -938,7 +938,10 @@ function OutputStream(options) {
output.space();
output.print("else");
output.space();
- force_statement(self.alternative, output);
+ if (self.alternative instanceof AST_If)
+ self.alternative.print(output);
+ else
+ force_statement(self.alternative, output);
} else {
self._do_print_body(output);
}
diff --git a/test/input/issue-1482/bracketize.js b/test/input/issue-1482/bracketize.js
new file mode 100644
index 00000000..2c2b103c
--- /dev/null
+++ b/test/input/issue-1482/bracketize.js
@@ -0,0 +1,73 @@
+if (x) {
+ foo();
+}
+
+if (x) {
+ foo();
+} else {
+ baz();
+}
+
+if (x) {
+ foo();
+} else if (y) {
+ bar();
+} else {
+ baz();
+}
+
+if (x) {
+ if (y) {
+ foo();
+ } else {
+ bar();
+ }
+} else {
+ baz();
+}
+
+if (x) {
+ foo();
+} else if (y) {
+ bar();
+} else if (z) {
+ baz();
+} else {
+ moo();
+}
+
+function f() {
+ if (x) {
+ foo();
+ }
+ if (x) {
+ foo();
+ } else {
+ baz();
+ }
+ if (x) {
+ foo();
+ } else if (y) {
+ bar();
+ } else {
+ baz();
+ }
+ if (x) {
+ if (y) {
+ foo();
+ } else {
+ bar();
+ }
+ } else {
+ baz();
+ }
+ if (x) {
+ foo();
+ } else if (y) {
+ bar();
+ } else if (z) {
+ baz();
+ } else {
+ moo();
+ }
+}
diff --git a/test/input/issue-1482/default.js b/test/input/issue-1482/default.js
new file mode 100644
index 00000000..14054e98
--- /dev/null
+++ b/test/input/issue-1482/default.js
@@ -0,0 +1,17 @@
+if (x) foo();
+
+if (x) foo(); else baz();
+
+if (x) foo(); else if (y) bar(); else baz();
+
+if (x) if (y) foo(); else bar(); else baz();
+
+if (x) foo(); else if (y) bar(); else if (z) baz(); else moo();
+
+function f() {
+ if (x) foo();
+ if (x) foo(); else baz();
+ if (x) foo(); else if (y) bar(); else baz();
+ if (x) if (y) foo(); else bar(); else baz();
+ if (x) foo(); else if (y) bar(); else if (z) baz(); else moo();
+}
diff --git a/test/input/issue-1482/input.js b/test/input/issue-1482/input.js
new file mode 100644
index 00000000..0186e82c
--- /dev/null
+++ b/test/input/issue-1482/input.js
@@ -0,0 +1,12 @@
+if (x) foo();
+if (x) foo(); else baz();
+if (x) foo(); else if (y) bar(); else baz();
+if (x) if (y) foo(); else bar(); else baz();
+if (x) foo(); else if (y) bar(); else if (z) baz(); else moo();
+function f() {
+if (x) foo();
+if (x) foo(); else baz();
+if (x) foo(); else if (y) bar(); else baz();
+if (x) if (y) foo(); else bar(); else baz();
+if (x) foo(); else if (y) bar(); else if (z) baz(); else moo();
+}
diff --git a/test/mocha/cli.js b/test/mocha/cli.js
index 64599c51..450df1fd 100644
--- a/test/mocha/cli.js
+++ b/test/mocha/cli.js
@@ -1,5 +1,6 @@
var assert = require("assert");
var exec = require("child_process").exec;
+var readFileSync = require("fs").readFileSync;
describe("bin/uglifyjs", function () {
var uglifyjscmd = '"' + process.argv[0] + '" bin/uglifyjs';
@@ -130,4 +131,24 @@ describe("bin/uglifyjs", function () {
done();
});
});
+ it("Should work with `--beautify`", function (done) {
+ var command = uglifyjscmd + ' test/input/issue-1482/input.js -b';
+
+ exec(command, function (err, stdout) {
+ if (err) throw err;
+
+ assert.strictEqual(stdout, readFileSync("test/input/issue-1482/default.js", "utf8"));
+ done();
+ });
+ });
+ it("Should work with `--beautify bracketize`", function (done) {
+ var command = uglifyjscmd + ' test/input/issue-1482/input.js -b bracketize';
+
+ exec(command, function (err, stdout) {
+ if (err) throw err;
+
+ assert.strictEqual(stdout, readFileSync("test/input/issue-1482/bracketize.js", "utf8"));
+ done();
+ });
+ });
});