@vlocode/apex
Version:
Salesforce APEX Parser and Grammar
33 lines • 1.29 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.CompilationUnitVisitor = void 0;
const syntaxTreeVisitor_1 = require("./syntaxTreeVisitor");
const classDeclarationVisitor_1 = require("./classDeclarationVisitor");
const types_1 = require("../types");
class CompilationUnitVisitor extends syntaxTreeVisitor_1.ApexSyntaxTreeVisitor {
constructor(state) {
super(state ?? { classes: [], interfaces: [] });
}
visitTypeDeclaration(ctx) {
if (ctx.classDeclaration()) {
const classInfo = new classDeclarationVisitor_1.ClassDeclarationVisitor().visit(ctx);
if (classInfo) {
classInfo.sourceRange = types_1.ApexSourceRange.fromToken(ctx);
this.addClass(classInfo);
}
}
return this.state;
}
addClass(classInfo) {
this.state.classes.push(classInfo);
// add nested classes to the top level
if (classInfo.nested.length) {
this.state.classes.push(...classInfo.nested.map(nested => ({
...nested,
name: `${classInfo.name}.${nested.name}`
})));
}
}
}
exports.CompilationUnitVisitor = CompilationUnitVisitor;
//# sourceMappingURL=compilationUnitVisitor.js.map