UNPKG

1.17 kBJavaScriptView Raw
1'use strict';
2
3const report = require('../../utils/report');
4const ruleMessages = require('../../utils/ruleMessages');
5const validateOptions = require('../../utils/validateOptions');
6const { isRegExp, isString } = require('../../utils/validateTypes');
7
8const ruleName = 'comment-pattern';
9
10const messages = ruleMessages(ruleName, {
11 expected: (pattern) => `Expected comment to match pattern "${pattern}"`,
12});
13
14const meta = {
15 url: 'https://stylelint.io/user-guide/rules/list/comment-pattern',
16};
17
18/** @type {import('stylelint').Rule} */
19const rule = (primary) => {
20 return (root, result) => {
21 const validOptions = validateOptions(result, ruleName, {
22 actual: primary,
23 possible: [isRegExp, isString],
24 });
25
26 if (!validOptions) {
27 return;
28 }
29
30 const normalizedPattern = isString(primary) ? new RegExp(primary) : primary;
31
32 root.walkComments((comment) => {
33 const text = comment.text;
34
35 if (normalizedPattern.test(text)) {
36 return;
37 }
38
39 report({
40 message: messages.expected(primary),
41 node: comment,
42 result,
43 ruleName,
44 });
45 });
46 };
47};
48
49rule.ruleName = ruleName;
50rule.messages = messages;
51rule.meta = meta;
52module.exports = rule;