我正在尝试创建一个可以读取Markdown文本并将其转换为HTML的Node.js应用程序。为了实现这一点,我想创建一个转换流,一次获取一个char,计算含义,然后返回它的HTML版本。
因此,例如,如果我传递变换流a *,它应该返回ibm-bluemix
(或<b>
)。
然而,转换流实际上并不转换数据,无论我推送它,它只是像我推动它一样回来,当我将</b>
语句放入流的转换方法时,我看到没有输出,好像甚至没有调用该方法。
这是Stream的文件:
console.log
使用Stream的示例文件:
module.exports = function returnStream() {
const Transform = require('stream').Transform;
let trckr = {
bold: false
};
const compiler = new Transform({
transform(chunk, encoding, done) {
const input = chunk.toString();
console.log(input); // No output
let output;
switch (input) {
case '*':
if (trckr.bold === true) {
output = '</b>';
trckr.bold = false;
} else {
output = '<b>';
trckr.bold = true;
}
break;
default:
output = input;
}
done(null, output);
}
});
return compiler;
};
谢谢!
答案 0 :(得分:1)
done(null, output)
和transformS.push()
执行完全相同的功能:它们将数据推送到Transform流的可读(输出)端。您需要做的不是调用transformS.push()
,而是使用transformS.write('*')
写入转换流的可写(输入)端。
我还应该指出,您不应该对转换函数中chunk
的内容做出假设。它可以是单个字符或一堆字符(在这种情况下,input
可能永远等于'*'
)。