mirror of
https://github.com/thangisme/notes.git
synced 2024-11-01 04:07:21 -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,
|
||
|
}),
|
||
|
})
|
||
|
}
|
||
|
})
|
||
|
}
|