UNPKG

e-lado

Version:

[![CircleCI](https://circleci.com/gh/sharetribe/sharetribe/tree/master.svg?style=svg)](https://circleci.com/gh/sharetribe/sharetribe/tree/master) [![Dependency Status](https://gemnasium.com/sharetribe/sharetribe.png)](https://gemnasium.com/sharetribe/shar

53 lines (45 loc) 1.2 kB
/** * @fileoverview The event generator for AST nodes. * @author Toru Nagashima */ "use strict"; //------------------------------------------------------------------------------ // Public Interface //------------------------------------------------------------------------------ /** * The event generator for AST nodes. * This implements below interface. * * ```ts * interface EventGenerator { * emitter: EventEmitter; * enterNode(node: ASTNode): void; * leaveNode(node: ASTNode): void; * } * ``` */ class NodeEventGenerator { /** * @param {EventEmitter} emitter - An event emitter which is the destination of events. */ constructor(emitter) { this.emitter = emitter; } /** * Emits an event of entering AST node. * @param {ASTNode} node - A node which was entered. * @returns {void} */ enterNode(node) { this.emitter.emit(node.type, node); } /** * Emits an event of leaving AST node. * @param {ASTNode} node - A node which was left. * @returns {void} */ leaveNode(node) { this.emitter.emit(`${node.type}:exit`, node); } } module.exports = NodeEventGenerator;