.gitignore added
[dotfiles/.git] / .config / coc / extensions / node_modules / coc-prettier / node_modules / stylelint / lib / rules / custom-property-pattern / index.js
1 "use strict";
2
3 const _ = require("lodash");
4 const isCustomProperty = require("../../utils/isCustomProperty");
5 const report = require("../../utils/report");
6 const ruleMessages = require("../../utils/ruleMessages");
7 const validateOptions = require("../../utils/validateOptions");
8
9 const ruleName = "custom-property-pattern";
10
11 const messages = ruleMessages(ruleName, {
12   expected: "Expected custom property 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.walkDecls(decl => {
28       const prop = decl.prop;
29
30       if (!isCustomProperty(prop)) {
31         return;
32       }
33       if (regexpPattern.test(prop.slice(2))) {
34         return;
35       }
36
37       report({
38         message: messages.expected,
39         node: decl,
40         result,
41         ruleName
42       });
43     });
44   };
45 };
46
47 rule.ruleName = ruleName;
48 rule.messages = messages;
49 module.exports = rule;