Skip to content

Commit

Permalink
Fix selector-attribute-operator-disallowed-list end positions (#6225)
Browse files Browse the repository at this point in the history
  • Loading branch information
ybiquitous committed Jul 28, 2022
1 parent 7204f50 commit e814132
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -47,24 +47,32 @@ testRule({
message: messages.rejected('~='),
line: 1,
column: 7,
endLine: 1,
endColumn: 9,
},
{
code: '[ title~="flower" ] { }',
message: messages.rejected('~='),
line: 1,
column: 8,
endLine: 1,
endColumn: 10,
},
{
code: '[title ~= "flower"] { }',
message: messages.rejected('~='),
line: 1,
column: 8,
endLine: 1,
endColumn: 10,
},
{
code: '[class*=te] { }',
message: messages.rejected('*='),
line: 1,
column: 7,
endLine: 1,
endColumn: 9,
},
],
});
Expand Down
18 changes: 12 additions & 6 deletions lib/rules/selector-attribute-operator-disallowed-list/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -29,29 +29,35 @@ const rule = (primary) => {
return;
}

const primaryValues = [primary].flat();
const primaryValues = new Set([primary].flat());

root.walkRules((ruleNode) => {
if (!isStandardSyntaxRule(ruleNode)) {
return;
}

if (!ruleNode.selector.includes('[') || !ruleNode.selector.includes('=')) {
const { selector } = ruleNode;

if (!selector.includes('[') || !selector.includes('=')) {
return;
}

parseSelector(ruleNode.selector, result, ruleNode, (selectorTree) => {
parseSelector(selector, result, ruleNode, (selectorTree) => {
selectorTree.walkAttributes((attributeNode) => {
const operator = attributeNode.operator;
const { operator } = attributeNode;

if (!operator || (operator && !primaryValues.includes(operator))) {
if (!operator || !primaryValues.has(operator)) {
return;
}

const index = attributeNode.sourceIndex + attributeNode.offsetOf('operator');
const endIndex = index + operator.length;

report({
message: messages.rejected(operator),
node: ruleNode,
index: attributeNode.sourceIndex + attributeNode.offsetOf('operator'),
index,
endIndex,
result,
ruleName,
});
Expand Down

0 comments on commit e814132

Please sign in to comment.