.gitignore added
[dotfiles/.git] / .config / coc / extensions / node_modules / coc-prettier / node_modules / stylelint / lib / rules / string-no-newline / index.js
1 "use strict";
2
3 const report = require("../../utils/report");
4 const ruleMessages = require("../../utils/ruleMessages");
5 const styleSearch = require("style-search");
6 const validateOptions = require("../../utils/validateOptions");
7
8 const ruleName = "string-no-newline";
9
10 const messages = ruleMessages(ruleName, {
11   rejected: "Unexpected newline in string"
12 });
13
14 const rule = function(actual) {
15   return (root, result) => {
16     const validOptions = validateOptions(result, ruleName, { actual });
17     if (!validOptions) {
18       return;
19     }
20
21     const cssString = root.toString();
22     styleSearch(
23       {
24         source: cssString,
25         target: "\n",
26         strings: "only"
27       },
28       match => {
29         const charBefore = cssString[match.startIndex - 1];
30         let index = match.startIndex;
31         if (charBefore === "\\") {
32           return;
33         }
34         if (charBefore === "\r") index -= 1;
35         report({
36           message: messages.rejected,
37           node: root,
38           index,
39           result,
40           ruleName
41         });
42       }
43     );
44   };
45 };
46
47 rule.ruleName = ruleName;
48 rule.messages = messages;
49 module.exports = rule;