| #!/usr/bin/env node | |
| // this script uses the uglifyjs parser to remove the function `pray()` | |
| // and all calls to it. It is run as part of the minification process. | |
| var fs = require('fs'); | |
| var uglifyjs = require('uglify-js'); | |
| function shouldRemove(el) { | |
| if (!Array.isArray(el)) return false; | |
| // function pray() { ... } | |
| if (el[0] === 'defun' && el[1].indexOf('pray' === 0)) return true; | |
| // pray(...) | |
| if (el[0] === 'call' && el[1][0] === 'name' && el[1][1].indexOf('pray') === 0) return true; | |
| // remove the entire statement containing pray(); | |
| if (el[0] === 'stat' && shouldRemove(el[1])) return true; | |
| return false; | |
| } | |
| var manglePray = exports.manglePray = function manglePray(ast) { | |
| if (!Array.isArray(ast)) return ast; | |
| var out = []; | |
| ast.forEach(function(el) { | |
| if (shouldRemove(el)) return; | |
| out.push(manglePray(el)); | |
| }); | |
| return out; | |
| } | |
| var getAst = exports.getAst = function getAst(fname) { | |
| var code = fs.readFileSync(fname, 'utf-8'); | |
| return uglifyjs.parser.parse(code); | |
| } | |
| function main() { | |
| var fname = process.argv[2]; | |
| var ast = manglePray(getAst(fname)); | |
| process.stdout.write(uglifyjs.uglify.gen_code(ast)); | |
| } | |
| main(); |