diff --git a/lib/ts-simple-ast.d.ts b/lib/ts-simple-ast.d.ts index d0c470dad..6a6cffbea 100644 --- a/lib/ts-simple-ast.d.ts +++ b/lib/ts-simple-ast.d.ts @@ -2303,24 +2303,24 @@ export interface JSDocableNode { * Adds a JS doc. * @param structure - Structure to add. */ - addJsDoc(structure: JSDocStructure | string): JSDoc; + addJsDoc(structure: JSDocStructure | string | WriterFunction): JSDoc; /** * Adds JS docs. * @param structures - Structures to add. */ - addJsDocs(structures: (JSDocStructure | string)[]): JSDoc[]; + addJsDocs(structures: (JSDocStructure | string | WriterFunction)[]): JSDoc[]; /** * Inserts a JS doc. * @param index - Child index to insert at. * @param structure - Structure to insert. */ - insertJsDoc(index: number, structure: JSDocStructure | string): JSDoc; + insertJsDoc(index: number, structure: JSDocStructure | string | WriterFunction): JSDoc; /** * Inserts JS docs. * @param index - Child index to insert at. * @param structures - Structures to insert. */ - insertJsDocs(index: number, structures: (JSDocStructure | string)[]): JSDoc[]; + insertJsDocs(index: number, structures: (JSDocStructure | string | WriterFunction)[]): JSDoc[]; } export declare type JSDocableNodeExtensionType = Node>(Base: T): Constructor & T { @@ -47,19 +48,19 @@ export function JSDocableNode> return nodes.map(n => this.getNodeFromCompilerNode(n)); } - addJsDoc(structure: JSDocStructure | string) { + addJsDoc(structure: JSDocStructure | string | WriterFunction) { return this.addJsDocs([structure])[0]; } - addJsDocs(structures: (JSDocStructure | string)[]) { + addJsDocs(structures: (JSDocStructure | string | WriterFunction)[]) { return this.insertJsDocs(getEndIndexFromArray(this.compilerNode.jsDoc), structures); } - insertJsDoc(index: number, structure: JSDocStructure | string) { + insertJsDoc(index: number, structure: JSDocStructure | string | WriterFunction) { return this.insertJsDocs(index, [structure])[0]; } - insertJsDocs(index: number, structures: (JSDocStructure | string)[]) { + insertJsDocs(index: number, structures: (JSDocStructure | string | WriterFunction)[]) { if (ArrayUtils.isNullOrEmpty(structures)) return []; diff --git a/src/structurePrinters/doc/JSDocStructurePrinter.ts b/src/structurePrinters/doc/JSDocStructurePrinter.ts index 9f675d0b5..f12d021a3 100644 --- a/src/structurePrinters/doc/JSDocStructurePrinter.ts +++ b/src/structurePrinters/doc/JSDocStructurePrinter.ts @@ -1,10 +1,11 @@ import { CodeBlockWriter } from "../../codeBlockWriter"; import { JSDocStructure } from "../../structures"; +import { WriterFunction } from "../../types"; import { getTextFromStringOrWriter } from "../../utils"; import { FactoryStructurePrinter } from "../FactoryStructurePrinter"; export class JSDocStructurePrinter extends FactoryStructurePrinter { - printText(writer: CodeBlockWriter, structure: JSDocStructure | string) { + printText(writer: CodeBlockWriter, structure: JSDocStructure | string | WriterFunction) { const lines = getText().split(/\r?\n/); writer.writeLine("/**"); for (const line of lines) @@ -14,11 +15,16 @@ export class JSDocStructurePrinter extends FactoryStructurePrinter { }); describe(nameof(n => n.insertJsDocs), () => { - function doTest(startCode: string, insertIndex: number, structures: (JSDocStructure | string)[], expectedCode: string, syntaxKind = SyntaxKind.FunctionDeclaration) { + function doTest(startCode: string, insertIndex: number, structures: (JSDocStructure | string | WriterFunction)[], + expectedCode: string, syntaxKind = SyntaxKind.FunctionDeclaration) + { const {descendant, sourceFile} = getInfoFromTextWithDescendant(startCode, syntaxKind); const result = (descendant as any as JSDocableNode).insertJsDocs(insertIndex, structures); expect(result.length).to.equal(structures.length); @@ -74,7 +77,7 @@ describe(nameof(JSDocableNode), () => { }); it("should insert in the middle", () => { - doTest("/**\n * Desc1\n */\n/**\n * Desc3\n */\nfunction identifier() {}", 1, [{ description: "Desc2" }], + doTest("/**\n * Desc1\n */\n/**\n * Desc3\n */\nfunction identifier() {}", 1, [writer => writer.write("Desc2")], "/**\n * Desc1\n */\n/**\n * Desc2\n */\n/**\n * Desc3\n */\nfunction identifier() {}"); });