31 lines
824 B
JavaScript
31 lines
824 B
JavaScript
|
#! /usr/bin/env node
|
||
|
|
||
|
global.sys = require(/^v0\.[012]/.test(process.version) ? "sys" : "util");
|
||
|
var fs = require("fs");
|
||
|
var uglify = require("uglify-js"), // symlink ~/.node_libraries/uglify-js.js to ../uglify-js.js
|
||
|
jsp = uglify.parser,
|
||
|
pro = uglify.uglify;
|
||
|
|
||
|
var code = fs.readFileSync("hoist.js", "utf8");
|
||
|
var ast = jsp.parse(code);
|
||
|
|
||
|
ast = pro.ast_lift_variables(ast);
|
||
|
|
||
|
var w = pro.ast_walker();
|
||
|
ast = w.with_walkers({
|
||
|
"function": function() {
|
||
|
var node = w.dive(this); // walk depth first
|
||
|
console.log(pro.gen_code(node, { beautify: true }));
|
||
|
return node;
|
||
|
},
|
||
|
"name": function(name) {
|
||
|
return [ this[0], "X" ];
|
||
|
}
|
||
|
}, function(){
|
||
|
return w.walk(ast);
|
||
|
});
|
||
|
|
||
|
console.log(pro.gen_code(ast, {
|
||
|
beautify: true
|
||
|
}));
|