.gitignore added
[dotfiles/.git] / .config / coc / extensions / node_modules / coc-prettier / node_modules / stylelint / lib / rules / property-case / index.js
1 "use strict";
2
3 const isCustomProperty = require("../../utils/isCustomProperty");
4 const isStandardSyntaxProperty = require("../../utils/isStandardSyntaxProperty");
5 const report = require("../../utils/report");
6 const ruleMessages = require("../../utils/ruleMessages");
7 const validateOptions = require("../../utils/validateOptions");
8
9 const ruleName = "property-case";
10
11 const messages = ruleMessages(ruleName, {
12   expected: (actual, expected) => `Expected "${actual}" to be "${expected}"`
13 });
14
15 const rule = function(expectation) {
16   return (root, result) => {
17     const validOptions = validateOptions(result, ruleName, {
18       actual: expectation,
19       possible: ["lower", "upper"]
20     });
21     if (!validOptions) {
22       return;
23     }
24
25     root.walkDecls(decl => {
26       const prop = decl.prop;
27
28       if (!isStandardSyntaxProperty(prop)) {
29         return;
30       }
31       if (isCustomProperty(prop)) {
32         return;
33       }
34
35       const expectedProp =
36         expectation === "lower" ? prop.toLowerCase() : prop.toUpperCase();
37       if (prop === expectedProp) {
38         return;
39       }
40
41       report({
42         message: messages.expected(prop, expectedProp),
43         node: decl,
44         ruleName,
45         result
46       });
47     });
48   };
49 };
50
51 rule.ruleName = ruleName;
52 rule.messages = messages;
53 module.exports = rule;