1
0
mirror of https://github.com/thangisme/notes.git synced 2024-11-01 04:07:21 -04:00
notes/node_modules/stylelint/lib/rules/selectorAttributeOperatorSpaceChecker.js

49 lines
1.5 KiB
JavaScript
Raw Normal View History

2017-03-09 13:16:08 -05:00
"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,
}),
})
}
})
}