.gitignore added
[dotfiles/.git] / .config / coc / extensions / node_modules / coc-prettier / node_modules / stylelint / lib / rules / media-feature-range-operator-space-after / index.js
1 "use strict";
2
3 const atRuleParamIndex = require("../../utils/atRuleParamIndex");
4 const findMediaOperator = require("../findMediaOperator");
5 const report = require("../../utils/report");
6 const ruleMessages = require("../../utils/ruleMessages");
7 const validateOptions = require("../../utils/validateOptions");
8 const whitespaceChecker = require("../../utils/whitespaceChecker");
9
10 const ruleName = "media-feature-range-operator-space-after";
11
12 const messages = ruleMessages(ruleName, {
13   expectedAfter: () => "Expected single space after range operator",
14   rejectedAfter: () => "Unexpected whitespace after range operator"
15 });
16
17 const rule = function(expectation) {
18   const checker = whitespaceChecker("space", expectation, messages);
19   return (root, result) => {
20     const validOptions = validateOptions(result, ruleName, {
21       actual: expectation,
22       possible: ["always", "never"]
23     });
24     if (!validOptions) {
25       return;
26     }
27
28     root.walkAtRules(/^media$/i, atRule => {
29       findMediaOperator(atRule, checkAfterOperator);
30     });
31
32     function checkAfterOperator(match, params, node) {
33       const endIndex = match.index + match[1].length;
34
35       checker.after({
36         source: params,
37         index: endIndex,
38         err: m => {
39           report({
40             message: m,
41             node,
42             index: endIndex + atRuleParamIndex(node) + 1,
43             result,
44             ruleName
45           });
46         }
47       });
48     }
49   };
50 };
51
52 rule.ruleName = ruleName;
53 rule.messages = messages;
54 module.exports = rule;