gherkin
Version:
34 lines (30 loc) • 900 B
text/typescript
import generateMessages from './generateMessages'
import { Transform, TransformCallback } from 'stream'
import { messages } from 'cucumber-messages'
import IGherkinOptions from '../IGherkinOptions'
/**
* Stream that reads Source messages and writes GherkinDocument and Pickle messages.
*/
export default class ParserMessageStream extends Transform {
constructor(private readonly options: IGherkinOptions) {
super({ writableObjectMode: true, readableObjectMode: true })
}
public _transform(
envelope: messages.IEnvelope,
encoding: string,
callback: TransformCallback
) {
if (envelope.source) {
const messageList = generateMessages(
envelope.source.data,
envelope.source.uri,
this.options
)
for (const message of messageList) {
this.push(message)
}
}
callback()
}
}
module.exports = ParserMessageStream