| 'use strict'; |
| |
| const stream = require('stream'); |
| const Transform = stream.Transform; |
| |
| /** |
| * Ensures that only <LF> is used for linebreaks |
| * |
| * @param {Object} options Stream options |
| */ |
| class LeWindows extends Transform { |
| |
| constructor(options) { |
| super(options); |
| // init Transform |
| this.options = options || {}; |
| } |
| |
| /** |
| * Escapes dots |
| */ |
| _transform(chunk, encoding, done) { |
| let buf; |
| let lastPos = 0; |
| |
| for (let i = 0, len = chunk.length; i < len; i++) { |
| if (chunk[i] === 0x0D) { // \n |
| buf = chunk.slice(lastPos, i); |
| lastPos = i + 1; |
| this.push(buf); |
| } |
| } |
| if (lastPos && lastPos < chunk.length) { |
| buf = chunk.slice(lastPos); |
| this.push(buf); |
| } else if (!lastPos) { |
| this.push(chunk); |
| } |
| done(); |
| } |
| } |
| |
| module.exports = LeWindows; |