52 lines
1.6 KiB
JavaScript
52 lines
1.6 KiB
JavaScript
/*
|
|
JS Reify
|
|
|
|
Uses JSShaper to parse javascript files and replace symbol names
|
|
|
|
>node reify.js [filename] old_symbolname new_symbolname
|
|
|
|
- it barfs output to stdout
|
|
- doesn't work w. stdin, node.js can't do sync stdin,
|
|
so write to tmpfile for external feeding of this animal)
|
|
*/
|
|
"use strict"; "use restrict";
|
|
var require = require || function(f) { load(f); };
|
|
require.paths && typeof __dirname !== "undefined" && require.paths.unshift(__dirname);
|
|
var args = (typeof process !== "undefined" && process.argv !== undefined) ?
|
|
process.argv.slice(2) : arguments;
|
|
var log = (typeof console !== "undefined") && console.log || print;
|
|
|
|
//if (args.length > 0 && args[0] === "--") {
|
|
// args.shift();
|
|
//}
|
|
|
|
if (args.length <= 0) {
|
|
log("run-shaper: filename OLDNAME NEWNAME");
|
|
(typeof quit === "undefined" ? process.exit : quit)(0);
|
|
}
|
|
var Shaper = Shaper || require("shaper.js") || Shaper;
|
|
|
|
var filename = args.shift();
|
|
var ORIGNAME = args.shift();
|
|
var NEWNAME = args.shift();
|
|
|
|
//define reify transformer
|
|
Shaper("reify", function(root) {
|
|
return Shaper.traverse(root, {pre: function(node, ref) {
|
|
if (node.type === tkn.IDENTIFIER) { // or: if (Shaper.match("$", node)) {
|
|
if(node.value === ORIGNAME ){
|
|
Shaper.renameIdentifier(node, NEWNAME);
|
|
}
|
|
}
|
|
}});
|
|
});
|
|
|
|
//specify the transform pipeline
|
|
var pipeline = ["reify","source"];
|
|
|
|
// read: js/d8/v8 || rhino || node
|
|
var read = read || typeof readFile !== "undefined" && readFile || require("fs").readFileSync;
|
|
var src = read(filename);
|
|
var root = Shaper.parseScript(src, filename);
|
|
root = Shaper.run(root, pipeline);
|