summaryrefslogtreecommitdiff
path: root/tools/eslint/lib/util/comment-event-generator.js
diff options
context:
space:
mode:
Diffstat (limited to 'tools/eslint/lib/util/comment-event-generator.js')
-rw-r--r--tools/eslint/lib/util/comment-event-generator.js116
1 files changed, 0 insertions, 116 deletions
diff --git a/tools/eslint/lib/util/comment-event-generator.js b/tools/eslint/lib/util/comment-event-generator.js
deleted file mode 100644
index 239a9834d0..0000000000
--- a/tools/eslint/lib/util/comment-event-generator.js
+++ /dev/null
@@ -1,116 +0,0 @@
-/**
- * @fileoverview The event generator for comments.
- * @author Toru Nagashima
- */
-
-"use strict";
-
-//------------------------------------------------------------------------------
-// Helpers
-//------------------------------------------------------------------------------
-
-/**
- * Check collection of comments to prevent double event for comment as
- * leading and trailing, then emit event if passing
- * @param {ASTNode[]} comments - Collection of comment nodes
- * @param {EventEmitter} emitter - The event emitter which is the destination of events.
- * @param {Object[]} locs - List of locations of previous comment nodes
- * @param {string} eventName - Event name postfix
- * @returns {void}
- */
-function emitComments(comments, emitter, locs, eventName) {
- if (comments.length > 0) {
- comments.forEach(node => {
- const index = locs.indexOf(node.loc);
-
- if (index >= 0) {
- locs.splice(index, 1);
- } else {
- locs.push(node.loc);
- emitter.emit(node.type + eventName, node);
- }
- });
- }
-}
-
-/**
- * Shortcut to check and emit enter of comment nodes
- * @param {CommentEventGenerator} generator - A generator to emit.
- * @param {ASTNode[]} comments - Collection of comment nodes
- * @returns {void}
- */
-function emitCommentsEnter(generator, comments) {
- emitComments(
- comments,
- generator.emitter,
- generator.commentLocsEnter,
- "Comment");
-}
-
-/**
- * Shortcut to check and emit exit of comment nodes
- * @param {CommentEventGenerator} generator - A generator to emit.
- * @param {ASTNode[]} comments Collection of comment nodes
- * @returns {void}
- */
-function emitCommentsExit(generator, comments) {
- emitComments(
- comments,
- generator.emitter,
- generator.commentLocsExit,
- "Comment:exit");
-}
-
-//------------------------------------------------------------------------------
-// Public Interface
-//------------------------------------------------------------------------------
-
-/**
- * The event generator for comments.
- * This is the decorator pattern.
- * This generates events of comments before/after events which are generated the original generator.
- *
- * Comment event generator class
- */
-class CommentEventGenerator {
-
- /**
- * @param {EventGenerator} originalEventGenerator - An event generator which is the decoration target.
- * @param {SourceCode} sourceCode - A source code which has comments.
- */
- constructor(originalEventGenerator, sourceCode) {
- this.original = originalEventGenerator;
- this.emitter = originalEventGenerator.emitter;
- this.sourceCode = sourceCode;
- this.commentLocsEnter = [];
- this.commentLocsExit = [];
- }
-
- /**
- * Emits an event of entering comments.
- * @param {ASTNode} node - A node which was entered.
- * @returns {void}
- */
- enterNode(node) {
- const comments = this.sourceCode.getComments(node);
-
- emitCommentsEnter(this, comments.leading);
- this.original.enterNode(node);
- emitCommentsEnter(this, comments.trailing);
- }
-
- /**
- * Emits an event of leaving comments.
- * @param {ASTNode} node - A node which was left.
- * @returns {void}
- */
- leaveNode(node) {
- const comments = this.sourceCode.getComments(node);
-
- emitCommentsExit(this, comments.trailing);
- this.original.leaveNode(node);
- emitCommentsExit(this, comments.leading);
- }
-}
-
-module.exports = CommentEventGenerator;