Blame view

node_modules/csso/lib/compressor/restructure/prepare/createDeclarationIndexer.js 726 Bytes
aaac7fed   liuqimichale   add
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
  var translate = require('../../../utils/translate.js');
  
  function Index() {
      this.seed = 0;
      this.map = Object.create(null);
  }
  
  Index.prototype.resolve = function(str) {
      var index = this.map[str];
  
      if (!index) {
          index = ++this.seed;
          this.map[str] = index;
      }
  
      return index;
  };
  
  module.exports = function createDeclarationIndexer() {
      var names = new Index();
      var values = new Index();
  
      return function markDeclaration(node) {
          var property = node.property.name;
          var value = translate(node.value);
  
          node.id = names.resolve(property) + (values.resolve(value) << 12);
          node.length = property.length + 1 + value.length;
  
          return node;
      };
  };