1/** 2 * @fileoverview Rule to flag when using multiline strings 3 * @author Ilya Volodin 4 */ 5 6"use strict"; 7 8//------------------------------------------------------------------------------ 9// Requirements 10//------------------------------------------------------------------------------ 11 12const astUtils = require("./utils/ast-utils"); 13 14//------------------------------------------------------------------------------ 15// Rule Definition 16//------------------------------------------------------------------------------ 17 18module.exports = { 19 meta: { 20 type: "suggestion", 21 22 docs: { 23 description: "disallow multiline strings", 24 category: "Best Practices", 25 recommended: false, 26 url: "https://eslint.org/docs/rules/no-multi-str" 27 }, 28 29 schema: [], 30 31 messages: { 32 multilineString: "Multiline support is limited to browsers supporting ES5 only." 33 } 34 }, 35 36 create(context) { 37 38 /** 39 * Determines if a given node is part of JSX syntax. 40 * @param {ASTNode} node The node to check. 41 * @returns {boolean} True if the node is a JSX node, false if not. 42 * @private 43 */ 44 function isJSXElement(node) { 45 return node.type.indexOf("JSX") === 0; 46 } 47 48 //-------------------------------------------------------------------------- 49 // Public API 50 //-------------------------------------------------------------------------- 51 52 return { 53 54 Literal(node) { 55 if (astUtils.LINEBREAK_MATCHER.test(node.raw) && !isJSXElement(node.parent)) { 56 context.report({ 57 node, 58 messageId: "multilineString" 59 }); 60 } 61 } 62 }; 63 64 } 65}; 66