summaryrefslogtreecommitdiff
path: root/tools/eslint/lib/rules/no-multi-str.js
diff options
context:
space:
mode:
Diffstat (limited to 'tools/eslint/lib/rules/no-multi-str.js')
-rw-r--r--tools/eslint/lib/rules/no-multi-str.js41
1 files changed, 41 insertions, 0 deletions
diff --git a/tools/eslint/lib/rules/no-multi-str.js b/tools/eslint/lib/rules/no-multi-str.js
new file mode 100644
index 0000000000..1d4810b97d
--- /dev/null
+++ b/tools/eslint/lib/rules/no-multi-str.js
@@ -0,0 +1,41 @@
+/**
+ * @fileoverview Rule to flag when using multiline strings
+ * @author Ilya Volodin
+ * @copyright 2014 Nicholas C. Zakas. All rights reserved.
+ * @copyright 2013 Ilya Volodin. All rights reserved.
+ */
+
+"use strict";
+
+//------------------------------------------------------------------------------
+// Rule Definition
+//------------------------------------------------------------------------------
+
+module.exports = function(context) {
+
+ /**
+ * Determines if a given node is part of JSX syntax.
+ * @param {ASTNode} node The node to check.
+ * @returns {boolean} True if the node is a JSX node, false if not.
+ * @private
+ */
+ function isJSXElement(node) {
+ return node.type.indexOf("JSX") === 0;
+ }
+
+ //--------------------------------------------------------------------------
+ // Public API
+ //--------------------------------------------------------------------------
+
+ return {
+
+ "Literal": function(node) {
+ var lineBreak = /\n/;
+
+ if (lineBreak.test(node.raw) && !isJSXElement(node.parent)) {
+ context.report(node, "Multiline support is limited to browsers supporting ES5 only.");
+ }
+ }
+ };
+
+};