diff --git a/README.md b/README.md index b9a6e4e..4353783 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,7 @@ var concat = require('concat-stream'); var removeBOM = require('remove-bom-stream'); fs.createReadStream('utf8-file-with-bom.txt') - .pipe(removeBOM()) + .pipe(removeBOM('utf-8')) .pipe( concat(function (result) { // result won't have a BOM @@ -28,9 +28,10 @@ fs.createReadStream('utf8-file-with-bom.txt') ## API -### `removeBOM()` +### `removeBOM(encoding)` + +Returns a `through2` stream that will remove a BOM, if `encoding` argument is `'utf-8'` and given the data is a UTF8 Buffer with a BOM at the beginning. If `encoding` is not `'utf-8'` or does not have a BOM, the data is not changed and this becomes a normal passthrough stream. -Returns a `through2` stream that will remove a BOM, given the data is a UTF8 Buffer with a BOM at the beginning. If the data is not UTF8 or does not have a BOM, the data is not changed and this becomes a normal passthrough stream. ## License diff --git a/index.js b/index.js index 59be8e9..3d11e2c 100644 --- a/index.js +++ b/index.js @@ -1,11 +1,13 @@ 'use strict'; var through = require('through2'); -var isUTF8 = require('is-utf8'); var removeBom = new TextDecoder('utf-8', { ignoreBOM: false }); -function removeBomStream() { +function removeBomStream(encoding) { + encoding = (encoding || '').toLowerCase(); + var isUtf8 = (encoding === 'utf8' || encoding === 'utf-8'); + var completed = false; var buffer = Buffer.alloc(0); @@ -16,7 +18,7 @@ function removeBomStream() { buffer = null; - if (isUTF8(data)) { + if (isUtf8) { return removeBom.decode(data); } return data; diff --git a/package.json b/package.json index 7dc04ac..be77b04 100644 --- a/package.json +++ b/package.json @@ -22,7 +22,6 @@ "test": "nyc mocha --async-only" }, "dependencies": { - "is-utf8": "^0.2.1", "through2": "^4.0.2" }, "devDependencies": { diff --git a/test/index.js b/test/index.js index fb51e29..9c9756f 100644 --- a/test/index.js +++ b/test/index.js @@ -24,7 +24,7 @@ describe('removeBomStream', function () { } pipe( - [fs.createReadStream(filepath), removeBomStream(), concat(assert)], + [fs.createReadStream(filepath), removeBomStream('utf8'), concat(assert)], done ); }); @@ -39,7 +39,7 @@ describe('removeBomStream', function () { } pipe( - [fs.createReadStream(filepath), removeBomStream(), concat(assert)], + [fs.createReadStream(filepath), removeBomStream('utf-8'), concat(assert)], done ); }); @@ -57,7 +57,7 @@ describe('removeBomStream', function () { [ fs.createReadStream(filepath), chunker(1), - removeBomStream(), + removeBomStream('UTF8'), concat(assert), ], done @@ -76,7 +76,7 @@ describe('removeBomStream', function () { } pipe( - [fs.createReadStream(filepath), removeBomStream(), concat(assert)], + [fs.createReadStream(filepath), removeBomStream('UTF-8'), concat(assert)], done ); }); @@ -91,7 +91,7 @@ describe('removeBomStream', function () { } pipe( - [fs.createReadStream(filepath), removeBomStream(), concat(assert)], + [fs.createReadStream(filepath), removeBomStream('utf-16be'), concat(assert)], done ); }); @@ -106,7 +106,7 @@ describe('removeBomStream', function () { } pipe( - [fs.createReadStream(filepath), removeBomStream(), concat(assert)], + [fs.createReadStream(filepath), removeBomStream('utf-16be'), concat(assert)], done ); }); @@ -121,7 +121,7 @@ describe('removeBomStream', function () { } pipe( - [fs.createReadStream(filepath), removeBomStream(), concat(assert)], + [fs.createReadStream(filepath), removeBomStream('utf-16le'), concat(assert)], done ); });