Files
DiceCloud/app/imports/parser/traverse.ts
2024-02-20 23:21:12 +02:00

13 lines
412 B
TypeScript

/* eslint-disable no-fallthrough */
import factories from './parseTree';
import ParseNode from '/imports/parser/parseTree/ParseNode';
export default function traverse(node: ParseNode, fn: (ParseNode) => any): ReturnType<typeof fn> {
if (!node) return;
const factory = factories[node.parseType];
if ('traverse' in factory) {
return factory.traverse(node as any, fn, traverse);
}
return fn(node);
}