UNPKG

@npmstuff/argdown-core

Version:

A pluggable parser for the Argdown argumentation syntax

30 lines 1.34 kB
import { EventEmitter } from "eventemitter3"; import { isRuleNode, isTokenNode } from "./model/model"; export class ArgdownTreeWalker extends EventEmitter { constructor() { super(...arguments); this.visitNode = (request, response, node, parentNode, childIndex, logger) => { if (node) { if (isRuleNode(node)) { this.emit(node.name + "Entry", request, response, node, parentNode, childIndex, logger); if (node.children && node.children.length > 0) { for (var i = 0; i < node.children.length; i++) { let child = node.children[i]; this.visitNode(request, response, child, node, i, logger); } } this.emit(node.name + "Exit", request, response, node, parentNode, childIndex, logger); } else if (isTokenNode(node)) { this.emit(node.tokenType.name, request, response, node, parentNode, childIndex, logger); } } }; } walk(request, response, logger) { if (response.ast) { this.visitNode(request, response, response.ast, null, null, logger); } } } //# sourceMappingURL=ArgdownTreeWalker.js.map