|
|
- "use strict";
-
- var BOMChar = '\uFEFF';
-
- exports.PrependBOM = PrependBOMWrapper
- function PrependBOMWrapper(encoder, options) {
- this.encoder = encoder;
- this.addBOM = true;
- }
-
- PrependBOMWrapper.prototype.write = function(str) {
- if (this.addBOM) {
- str = BOMChar + str;
- this.addBOM = false;
- }
-
- return this.encoder.write(str);
- }
-
- PrependBOMWrapper.prototype.end = function() {
- return this.encoder.end();
- }
-
-
- //------------------------------------------------------------------------------
-
- exports.StripBOM = StripBOMWrapper;
- function StripBOMWrapper(decoder, options) {
- this.decoder = decoder;
- this.pass = false;
- this.options = options || {};
- }
-
- StripBOMWrapper.prototype.write = function(buf) {
- var res = this.decoder.write(buf);
- if (this.pass || !res)
- return res;
-
- if (res[0] === BOMChar) {
- res = res.slice(1);
- if (typeof this.options.stripBOM === 'function')
- this.options.stripBOM();
- }
-
- this.pass = true;
- return res;
- }
-
- StripBOMWrapper.prototype.end = function() {
- return this.decoder.end();
- }
-
|