.gitignore added
[dotfiles/.git] / .config / coc / extensions / node_modules / coc-prettier / node_modules / stylelint / lib / rules / selector-descendant-combinator-no-non-space / index.js
1 "use strict";
2
3 const isStandardSyntaxRule = require("../../utils/isStandardSyntaxRule");
4 const parseSelector = require("../../utils/parseSelector");
5 const punctuationSets = require("../../reference/punctuationSets");
6 const report = require("../../utils/report");
7 const ruleMessages = require("../../utils/ruleMessages");
8 const validateOptions = require("../../utils/validateOptions");
9
10 const ruleName = "selector-descendant-combinator-no-non-space";
11
12 const messages = ruleMessages(ruleName, {
13   rejected: nonSpaceCharacter => `Unexpected "${nonSpaceCharacter}"`
14 });
15
16 const rule = function(actual) {
17   return (root, result) => {
18     const validOptions = validateOptions(result, ruleName, { actual });
19     if (!validOptions) {
20       return;
21     }
22
23     root.walkRules(rule => {
24       if (!isStandardSyntaxRule(rule)) {
25         return;
26       }
27
28       const selector = rule.selector;
29
30       parseSelector(selector, result, rule, fullSelector => {
31         fullSelector.walkCombinators(combinatorNode => {
32           const value = combinatorNode.value;
33
34           if (punctuationSets.nonSpaceCombinators.has(value)) {
35             return;
36           }
37           if (value === " ") {
38             return;
39           }
40
41           report({
42             result,
43             ruleName,
44             message: messages.rejected(value),
45             node: rule,
46             index: combinatorNode.sourceIndex
47           });
48         });
49       });
50     });
51   };
52 };
53
54 rule.ruleName = ruleName;
55 rule.messages = messages;
56 module.exports = rule;