improve `--beautify bracketize`
authoralexlamsl <alexlamsl@gmail.com>
Sat, 18 Feb 2017 11:30:33 +0000 (19:30 +0800)
committeralexlamsl <alexlamsl@gmail.com>
Tue, 21 Feb 2017 05:29:58 +0000 (13:29 +0800)
reduce whitespaces from if-else statements

fixes #1482
closes #1483

lib/output.js
test/input/issue-1482/bracketize.js [new file with mode: 0644]
test/input/issue-1482/default.js [new file with mode: 0644]
test/input/issue-1482/input.js [new file with mode: 0644]
test/mocha/cli.js

index b6f0a87..4f576c9 100644 (file)
@@ -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 (file)
index 0000000..2c2b103
--- /dev/null
@@ -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 (file)
index 0000000..14054e9
--- /dev/null
@@ -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 (file)
index 0000000..0186e82
--- /dev/null
@@ -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();
+}
index 64599c5..450df1f 100644 (file)
@@ -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();
+       });
+    });
 });