Blame view

node_modules/csso/lib/compressor/compress/property/background.js 1.49 KB
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
  var List = require('../../../utils/list.js');
  
  module.exports = function compressBackground(node) {
      function lastType() {
          if (buffer.length) {
              return buffer[buffer.length - 1].type;
          }
      }
  
      function flush() {
          if (lastType() === 'Space') {
              buffer.pop();
          }
  
          if (!buffer.length) {
              buffer.unshift(
                  {
                      type: 'Number',
                      value: '0'
                  },
                  {
                      type: 'Space'
                  },
                  {
                      type: 'Number',
                      value: '0'
                  }
              );
          }
  
          newValue.push.apply(newValue, buffer);
  
          buffer = [];
      }
  
      var newValue = [];
      var buffer = [];
  
      node.sequence.each(function(node) {
          if (node.type === 'Operator' && node.value === ',') {
              flush();
              newValue.push(node);
              return;
          }
  
          // remove defaults
          if (node.type === 'Identifier') {
              if (node.name === 'transparent' ||
                  node.name === 'none' ||
                  node.name === 'repeat' ||
                  node.name === 'scroll') {
                  return;
              }
          }
  
          // don't add redundant spaces
          if (node.type === 'Space' && (!buffer.length || lastType() === 'Space')) {
              return;
          }
  
          buffer.push(node);
      });
  
      flush();
      node.sequence = new List(newValue);
  };