123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- #!/usr/bin/env node
-
- var recast = require("recast");
- var types = recast.types;
- var n = types.namedTypes;
- var b = types.builders;
-
- require("recast").run(function(ast, callback) {
- recast.visit(ast, {
- visitIfStatement: function(path) {
- var stmt = path.node;
- stmt.consequent = fix(stmt.consequent);
-
- var alt = stmt.alternate;
- if (!n.IfStatement.check(alt)) {
- stmt.alternate = fix(alt);
- }
-
- this.traverse(path);
- },
-
- visitWhileStatement: visitLoop,
- visitForStatement: visitLoop,
- visitForInStatement: visitLoop
- });
-
- callback(ast);
- });
-
- function visitLoop(path) {
- var loop = path.node;
- loop.body = fix(loop.body);
- this.traverse(path);
- }
-
- function fix(clause) {
- if (clause) {
- if (!n.BlockStatement.check(clause)) {
- clause = b.blockStatement([clause]);
- }
- }
-
- return clause;
- }
|