# Source: m3u8/line-stream.js

    /**
     * @file m3u8/line-stream.js
     */
    import Stream from '../stream';

    /**
     * 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);
        }
      }
    }