.gitignore added
[dotfiles/.git] / .config / coc / extensions / node_modules / coc-prettier / node_modules / stylelint / lib / rules / at-rule-semicolon-newline-after / index.js
1 "use strict";
2
3 const hasBlock = require("../../utils/hasBlock");
4 const nextNonCommentNode = require("../../utils/nextNonCommentNode");
5 const rawNodeString = require("../../utils/rawNodeString");
6 const report = require("../../utils/report");
7 const ruleMessages = require("../../utils/ruleMessages");
8 const validateOptions = require("../../utils/validateOptions");
9 const whitespaceChecker = require("../../utils/whitespaceChecker");
10
11 const ruleName = "at-rule-semicolon-newline-after";
12
13 const messages = ruleMessages(ruleName, {
14   expectedAfter: () => 'Expected newline after ";"'
15 });
16
17 const rule = function(actual) {
18   const checker = whitespaceChecker("newline", actual, messages);
19
20   return (root, result) => {
21     const validOptions = validateOptions(result, ruleName, {
22       actual,
23       possible: ["always"]
24     });
25     if (!validOptions) {
26       return;
27     }
28
29     root.walkAtRules(atRule => {
30       const nextNode = atRule.next();
31       if (!nextNode) {
32         return;
33       }
34       if (hasBlock(atRule)) {
35         return;
36       }
37
38       // Allow an end-of-line comment
39       const nodeToCheck = nextNonCommentNode(nextNode);
40       if (!nodeToCheck) {
41         return;
42       }
43
44       checker.afterOneOnly({
45         source: rawNodeString(nodeToCheck),
46         index: -1,
47         err: msg => {
48           report({
49             message: msg,
50             node: atRule,
51             index: atRule.toString().length + 1,
52             result,
53             ruleName
54           });
55         }
56       });
57     });
58   };
59 };
60
61 rule.ruleName = ruleName;
62 rule.messages = messages;
63 module.exports = rule;