CoolFace
Apppublic

AK-21/Graphite-Industrial-Intelligence

sourceHugging Faceupdated 3mo agoView on Hugging Face
0likes
old-selector.js68 linesDownload Raw Back to lib
1class OldSelector {2  constructor(selector, prefix) {3    this.prefix = prefix4    this.prefixed = selector.prefixed(this.prefix)5    this.regexp = selector.regexp(this.prefix)6 7    this.prefixeds = selector8      .possible()9      .map(x => [selector.prefixed(x), selector.regexp(x)])10 11    this.unprefixed = selector.name12    this.nameRegexp = selector.regexp()13  }14 15  /**16   * Does rule contain an unnecessary prefixed selector17   */18  check(rule) {19    if (!rule.selector.includes(this.prefixed)) {20      return false21    }22    if (!rule.selector.match(this.regexp)) {23      return false24    }25    if (this.isHack(rule)) {26      return false27    }28    return true29  }30 31  /**32   * Is rule a hack without unprefixed version bottom33   */34  isHack(rule) {35    let index = rule.parent.index(rule) + 136    let rules = rule.parent.nodes37 38    while (index < rules.length) {39      let before = rules[index].selector40      if (!before) {41        return true42      }43 44      if (before.includes(this.unprefixed) && before.match(this.nameRegexp)) {45        return false46      }47 48      let some = false49      for (let [string, regexp] of this.prefixeds) {50        if (before.includes(string) && before.match(regexp)) {51          some = true52          break53        }54      }55 56      if (!some) {57        return true58      }59 60      index += 161    }62 63    return true64  }65}66 67module.exports = OldSelector68