1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- const ts = require("typescript");
- const util_1 = require("./util");
- function convertAst(sourceFile) {
- const wrapped = {
- node: sourceFile,
- parent: undefined,
- kind: ts.SyntaxKind.SourceFile,
- children: [],
- next: undefined,
- skip: undefined,
- };
- const flat = [];
- let current = wrapped;
- let previous = current;
- ts.forEachChild(sourceFile, function wrap(node) {
- flat.push(node);
- const parent = current;
- previous.next = current = {
- node,
- parent,
- kind: node.kind,
- children: [],
- next: undefined,
- skip: undefined,
- };
- if (previous !== parent)
- setSkip(previous, current);
- previous = current;
- parent.children.push(current);
- if (util_1.isNodeKind(node.kind))
- ts.forEachChild(node, wrap);
- current = parent;
- });
- return {
- wrapped,
- flat,
- };
- }
- exports.convertAst = convertAst;
- function setSkip(node, skip) {
- do {
- node.skip = skip;
- node = node.parent;
- } while (node !== skip.parent);
- }
|