.gitignore added
[dotfiles/.git] / .config / coc / extensions / node_modules / coc-prettier / node_modules / stylelint / lib / rules / comment-word-blacklist / index.js
1 "use strict";
2
3 const _ = require("lodash");
4 const containsString = require("../../utils/containsString");
5 const matchesStringOrRegExp = require("../../utils/matchesStringOrRegExp");
6 const report = require("../../utils/report");
7 const ruleMessages = require("../../utils/ruleMessages");
8 const validateOptions = require("../../utils/validateOptions");
9
10 const ruleName = "comment-word-blacklist";
11
12 const messages = ruleMessages(ruleName, {
13   rejected: pattern => `Unexpected word matching pattern "${pattern}"`
14 });
15
16 const rule = function(blacklist) {
17   return (root, result) => {
18     const validOptions = validateOptions(result, ruleName, {
19       actual: blacklist,
20       possible: [_.isString]
21     });
22     if (!validOptions) {
23       return;
24     }
25
26     root.walkComments(comment => {
27       const text = comment.text;
28       const rawComment = comment.toString();
29       const firstFourChars = rawComment.substr(0, 4);
30
31       // Return early if sourcemap
32       if (firstFourChars === "/*# ") {
33         return;
34       }
35
36       const matchesWord =
37         matchesStringOrRegExp(text, blacklist) ||
38         containsString(text, blacklist);
39
40       if (!matchesWord) {
41         return;
42       }
43
44       report({
45         message: messages.rejected(matchesWord.pattern),
46         node: comment,
47         result,
48         ruleName
49       });
50     });
51   };
52 };
53
54 rule.primaryOptionArray = true;
55
56 rule.ruleName = ruleName;
57 rule.messages = messages;
58 module.exports = rule;