"use strict" const isStandardSyntaxRule = require("../utils/isStandardSyntaxRule") const parseSelector = require("../utils/parseSelector") const report = require("../utils/report") const styleSearch = require("style-search") module.exports = function (options) { options.root.walkRules(rule => { if (!isStandardSyntaxRule(rule)) { return } if (rule.selector.indexOf("[") === -1 || rule.selector.indexOf("=") === -1) { return } parseSelector(rule.selector, options.result, rule, selectorTree => { selectorTree.walkAttributes(attributeNode => { const operator = attributeNode.operator if (!operator) { return } const attributeNodeString = attributeNode.toString() styleSearch({ source: attributeNodeString, target: operator }, match => { const index = options.checkBeforeOperator ? match.startIndex : match.endIndex - 1 checkOperator(attributeNodeString, index, rule, attributeNode.sourceIndex, operator) }) }) }) function checkOperator(source, index, node, attributeIndex, operator) { options.locationChecker({ source, index, err: m => report({ message: m.replace(options.checkBeforeOperator ? operator[0] : operator[operator.length - 1], operator), node, index: attributeIndex + index, result: options.result, ruleName: options.checkedRuleName, }), }) } }) }