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");
11 const ruleName = "at-rule-semicolon-newline-after";
13 const messages = ruleMessages(ruleName, {
14 expectedAfter: () => 'Expected newline after ";"'
17 const rule = function(actual) {
18 const checker = whitespaceChecker("newline", actual, messages);
20 return (root, result) => {
21 const validOptions = validateOptions(result, ruleName, {
29 root.walkAtRules(atRule => {
30 const nextNode = atRule.next();
34 if (hasBlock(atRule)) {
38 // Allow an end-of-line comment
39 const nodeToCheck = nextNonCommentNode(nextNode);
44 checker.afterOneOnly({
45 source: rawNodeString(nodeToCheck),
51 index: atRule.toString().length + 1,
61 rule.ruleName = ruleName;
62 rule.messages = messages;
63 module.exports = rule;