Open ainthek opened 8 years ago
It's being very literal. The text for property "b" does not include the comma in between, so it does not replace the comma.
solved somehow: getting object and reconstructing from properties except deleted ones:
// sample: echo "var x={id:10,b:20,c:30}" | node _tools/delete-properties.js "b,id"
// parse original args
var args = require('grasp/lib/options.js').parse(process.argv);
// store for replacer
var toDelete = args._[0].split(",");
// transform to s-query for object search (narrow the query)
args._[0] = 'obj!>prop[key=(' + toDelete.map(function(p) {
return "#" + p;
}).join(",") + ')]';
// set custom replacer (using toDelete)
args.replaceFunc = function(getRaw, node, query, named) {
var ps = query(".properties");
var raw = ps.filter(function(p) {
return !~toDelete.indexOf(p.key.name);
}).map(function(p) {
return getRaw(p);
}).join(",\n");
return "{" + raw + "}";
}
//
require('grasp')({
args: args,
exit: process.exit,
stdin: process.stdin,
callback: console.log,
error: console.error
});
What are you doing here? I'd like to be able to delete a certain named function from an ES6 class. Does grasp/acorn support classes and other such ES6 contstructs??
echo "var x={a:10,b:20}" | grasp -s "prop[key=#b]" -R '' var x={a:10,}
leaves unexpected ,
any ideas ?