Blame view

node_modules/iconv-lite/lib/bom-handling.js 1.08 KB
f7563de62   Palak Handa   first commit
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
  "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();
  }