UNPKG

@maniascript/api

Version:

Maniascript API generator

68 lines (67 loc) 2.04 kB
class DocVisitor { newLineCount = 0; visitDescription(ctx) { if (ctx === null) return undefined; const trimmedDescription = ctx.getText().trim(); return trimmedDescription !== '' ? trimmedDescription : undefined; } visitLineBrief(doc, ctx) { if (ctx === null) return; const description = this.visitDescription(ctx.brief().description()); if (description !== undefined) { if (doc.brief === undefined) { doc.brief = description; } else { doc.brief += `\n${description}`; } } } visitLineParam(doc, ctx) { if (ctx === null) return; if (doc.params === undefined) { doc.params = []; } doc.params.push({ name: ctx.param()._paramName?.text ?? '', description: this.visitDescription(ctx.param().description()) }); } visitLineDescription(doc, ctx) { if (ctx === null) return; const description = this.visitDescription(ctx.description()); if (description !== undefined) { if (doc.description === undefined) { doc.description = description; } else if (this.newLineCount >= 2) { doc.description += `\n${description}`; } else { doc.description += ` ${description}`; } } this.newLineCount = 0; } visitLine(doc, ctx) { this.visitLineBrief(doc, ctx.lineBrief()); this.visitLineParam(doc, ctx.lineParam()); this.visitLineDescription(doc, ctx.lineDescription()); this.newLineCount += 1; } visit(ctx) { const doc = {}; const lines = ctx.content()?.line(); if (lines !== undefined) { for (const line of lines) { this.visitLine(doc, line); } } return doc; } } export { DocVisitor };