summaryrefslogtreecommitdiff
path: root/tools/node_modules/eslint/lib/rules/no-restricted-syntax.js
diff options
context:
space:
mode:
Diffstat (limited to 'tools/node_modules/eslint/lib/rules/no-restricted-syntax.js')
-rw-r--r--tools/node_modules/eslint/lib/rules/no-restricted-syntax.js62
1 files changed, 62 insertions, 0 deletions
diff --git a/tools/node_modules/eslint/lib/rules/no-restricted-syntax.js b/tools/node_modules/eslint/lib/rules/no-restricted-syntax.js
new file mode 100644
index 0000000000..1798065ec0
--- /dev/null
+++ b/tools/node_modules/eslint/lib/rules/no-restricted-syntax.js
@@ -0,0 +1,62 @@
+/**
+ * @fileoverview Rule to flag use of certain node types
+ * @author Burak Yigit Kaya
+ */
+"use strict";
+
+//------------------------------------------------------------------------------
+// Rule Definition
+//------------------------------------------------------------------------------
+
+module.exports = {
+ meta: {
+ docs: {
+ description: "disallow specified syntax",
+ category: "Stylistic Issues",
+ recommended: false
+ },
+
+ schema: {
+ type: "array",
+ items: [{
+ oneOf: [
+ {
+ type: "string"
+ },
+ {
+ type: "object",
+ properties: {
+ selector: { type: "string" },
+ message: { type: "string" }
+ },
+ required: ["selector"],
+ additionalProperties: false
+ }
+ ]
+ }],
+ uniqueItems: true,
+ minItems: 0
+ }
+ },
+
+ create(context) {
+ return context.options.reduce((result, selectorOrObject) => {
+ const isStringFormat = (typeof selectorOrObject === "string");
+ const hasCustomMessage = !isStringFormat && Boolean(selectorOrObject.message);
+
+ const selector = isStringFormat ? selectorOrObject : selectorOrObject.selector;
+ const message = hasCustomMessage ? selectorOrObject.message : "Using '{{selector}}' is not allowed.";
+
+ return Object.assign(result, {
+ [selector](node) {
+ context.report({
+ node,
+ message,
+ data: hasCustomMessage ? {} : { selector }
+ });
+ }
+ });
+ }, {});
+
+ }
+};