buymymojo.net/node_modules/m3u8-parser/src/line-stream.js
2021-07-02 19:29:34 +10:00

35 lines
749 B
JavaScript

/**
* @file m3u8/line-stream.js
*/
import Stream from '@videojs/vhs-utils/es/stream.js';
/**
* A stream that buffers string input and generates a `data` event for each
* line.
*
* @class LineStream
* @extends Stream
*/
export default class LineStream extends Stream {
constructor() {
super();
this.buffer = '';
}
/**
* Add new data to be parsed.
*
* @param {string} data the text to process
*/
push(data) {
let nextNewline;
this.buffer += data;
nextNewline = this.buffer.indexOf('\n');
for (; nextNewline > -1; nextNewline = this.buffer.indexOf('\n')) {
this.trigger('data', this.buffer.substring(0, nextNewline));
this.buffer = this.buffer.substring(nextNewline + 1);
}
}
}