Blame view

node_modules/autoprefixer/lib/old-selector.js 1.8 KB
ce4c83ff   wxy   初始提交
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
67
68
  (function() {
    var OldSelector;
  
    OldSelector = (function() {
      function OldSelector(selector, prefix1) {
        var i, len, prefix, ref;
        this.prefix = prefix1;
        this.prefixed = selector.prefixed(this.prefix);
        this.regexp = selector.regexp(this.prefix);
        this.prefixeds = [];
        ref = selector.possible();
        for (i = 0, len = ref.length; i < len; i++) {
          prefix = ref[i];
          this.prefixeds.push([selector.prefixed(prefix), selector.regexp(prefix)]);
        }
        this.unprefixed = selector.name;
        this.nameRegexp = selector.regexp();
      }
  
      OldSelector.prototype.isHack = function(rule) {
        var before, i, index, len, ref, ref1, regexp, rules, some, string;
        index = rule.parent.index(rule) + 1;
        rules = rule.parent.nodes;
        while (index < rules.length) {
          before = rules[index].selector;
          if (!before) {
            return true;
          }
          if (before.indexOf(this.unprefixed) !== -1 && before.match(this.nameRegexp)) {
            return false;
          }
          some = false;
          ref = this.prefixeds;
          for (i = 0, len = ref.length; i < len; i++) {
            ref1 = ref[i], string = ref1[0], regexp = ref1[1];
            if (before.indexOf(string) !== -1 && before.match(regexp)) {
              some = true;
              break;
            }
          }
          if (!some) {
            return true;
          }
          index += 1;
        }
        return true;
      };
  
      OldSelector.prototype.check = function(rule) {
        if (rule.selector.indexOf(this.prefixed) === -1) {
          return false;
        }
        if (!rule.selector.match(this.regexp)) {
          return false;
        }
        if (this.isHack(rule)) {
          return false;
        }
        return true;
      };
  
      return OldSelector;
  
    })();
  
    module.exports = OldSelector;
  
  }).call(this);