AK-21/Graphite-Industrial-Intelligence
0
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 