mirror of
https://github.com/thangisme/notes.git
synced 2024-11-01 02:27:20 -04:00
49 lines
1.5 KiB
JavaScript
49 lines
1.5 KiB
JavaScript
"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,
|
|
}),
|
|
})
|
|
}
|
|
})
|
|
}
|