我想使用此功能的stdin
参数:http://graspjs.com/docs/lib/。
grasp
函数希望此参数是具有process.stdin
的相同接口的对象。而我所拥有的是字符串类型的内存中的一个简单变量。
如何将此变量赋予此函数的stdin输入?
var grasp = require('grasp');
var sourceCode = 'if (condititon) { console.log("In the condition"); }';
grasp({
args: '--equery condititon --replace true',
stdin: SomethingLikeStringToStdin(sourceCode),
callback: console.log
});
预期日志:
if (true) { console.log("In the condition"); }
答案 0 :(得分:2)
使用Grasp 0.2.0,您现在可以在将Grasp用作库时使用新的input
选项,或使用两个新辅助函数之一:grasp.search
和grasp.replace
。这将允许您在不必创建假StdIn的情况下执行您想要的操作。
答案 1 :(得分:1)
process.stdin
是Readable Stream
。 grasp
期望的是它可以从中读取数据的流。要模拟此行为,您可以使用PassThrough
流:它是一个流,您可以将缓冲区的字符串写入,并将以任何可读流的形式发出此数据。
以下是一个用法示例:
var stream = require('stream');
var passthrough = new stream.PassThrough();
grasp({ stdin: passthrough });
passthrough.push('some data');
passthrough.push('some other data');
passthrough.end();