.gitignore added
[dotfiles/.git] / .config / coc / extensions / node_modules / coc-prettier / node_modules / stylelint / lib / rules / custom-media-pattern / index.js
1 "use strict";
2
3 const _ = require("lodash");
4 const atRuleParamIndex = require("../../utils/atRuleParamIndex");
5 const report = require("../../utils/report");
6 const ruleMessages = require("../../utils/ruleMessages");
7 const validateOptions = require("../../utils/validateOptions");
8
9 const ruleName = "custom-media-pattern";
10
11 const messages = ruleMessages(ruleName, {
12   expected: "Expected custom media query name to match specified pattern"
13 });
14
15 const rule = function(pattern) {
16   return (root, result) => {
17     const validOptions = validateOptions(result, ruleName, {
18       actual: pattern,
19       possible: [_.isRegExp, _.isString]
20     });
21     if (!validOptions) {
22       return;
23     }
24
25     const regexpPattern = _.isString(pattern) ? new RegExp(pattern) : pattern;
26
27     root.walkAtRules(atRule => {
28       if (atRule.name.toLowerCase() !== "custom-media") {
29         return;
30       }
31
32       const customMediaName = atRule.params.match(/^--(\S+)\b/)[1];
33
34       if (regexpPattern.test(customMediaName)) {
35         return;
36       }
37
38       report({
39         message: messages.expected,
40         node: atRule,
41         index: atRuleParamIndex(atRule),
42         result,
43         ruleName
44       });
45     });
46   };
47 };
48
49 rule.ruleName = ruleName;
50 rule.messages = messages;
51 module.exports = rule;