1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- #!/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;
- }
|