diff --git a/demo/10-my-cv.ts b/demo/10-my-cv.ts index b91ca318bb..484a9c249c 100644 --- a/demo/10-my-cv.ts +++ b/demo/10-my-cv.ts @@ -204,7 +204,10 @@ class DocumentCreator { alignment: AlignmentType.CENTER, children: [ new TextRun(`Mobile: ${phoneNumber} | LinkedIn: ${profileUrl} | Email: ${email}`), - new TextRun("Address: 58 Elm Avenue, Kent ME4 6ER, UK").break(), + new TextRun({ + text: "Address: 58 Elm Avenue, Kent ME4 6ER, UK", + break: 1, + }), ], }); } diff --git a/demo/54-track-revisions.ts b/demo/54-track-revisions.ts index a0cc47a03b..e035fbb18a 100644 --- a/demo/54-track-revisions.ts +++ b/demo/54-track-revisions.ts @@ -80,6 +80,7 @@ doc.addSection({ children: [ new TextRun("This is a demo "), new DeletedTextRun({ + break: 1, text: "in order", color: "red", bold: true, @@ -95,7 +96,7 @@ doc.addSection({ id: 2, author: "Firstname Lastname", date: "2020-10-06T09:00:00Z", - }).break(), + }), new InsertedTextRun({ text: "to show how to ", bold: false, diff --git a/docs/usage/text.md b/docs/usage/text.md index 3ae388f780..0b7b88686b 100644 --- a/docs/usage/text.md +++ b/docs/usage/text.md @@ -158,6 +158,15 @@ Sometimes you would want to put text underneath another line of text but inside ```ts const text = new TextRun({ text: "break", - break: true, + break: 1, +}); +``` + +Adding two breaks: + +```ts +const text = new TextRun({ + text: "break", + break: 2, }); ``` diff --git a/src/file/paragraph/run/run.spec.ts b/src/file/paragraph/run/run.spec.ts index 40cc7055cd..017c616938 100644 --- a/src/file/paragraph/run/run.spec.ts +++ b/src/file/paragraph/run/run.spec.ts @@ -239,13 +239,29 @@ describe("Run", () => { describe("#break()", () => { it("it should add break to the run", () => { - const run = new Run({}); - run.break(); + const run = new Run({ + break: 1, + }); const tree = new Formatter().format(run); expect(tree).to.deep.equal({ "w:r": [{ "w:br": {} }], }); }); + + it("it should add two breaks to the run", () => { + const run = new Run({ + break: 2, + }); + const tree = new Formatter().format(run); + expect(tree).to.deep.equal({ + "w:r": [ + { "w:br": {} }, + { + "w:br": {}, + }, + ], + }); + }); }); describe("#font()", () => { diff --git a/src/file/paragraph/run/run.ts b/src/file/paragraph/run/run.ts index bf7903e35e..461fd9da29 100644 --- a/src/file/paragraph/run/run.ts +++ b/src/file/paragraph/run/run.ts @@ -11,6 +11,7 @@ import { Text } from "./run-components/text"; export interface IRunOptions extends IRunPropertiesOptions { readonly children?: (Begin | FieldInstruction | Separate | End | PageNumber | FootnoteReferenceRun | string)[]; + readonly break?: number; readonly text?: string; } @@ -62,10 +63,11 @@ export class Run extends XmlComponent { } else if (options.text) { this.root.push(new Text(options.text)); } - } - public break(): Run { - this.root.splice(1, 0, new Break()); - return this; + if (options.break) { + for (let i = 0; i < options.break; i++) { + this.root.splice(1, 0, new Break()); + } + } } } diff --git a/src/file/track-revision/track-revision-components/deleted-text-run.spec.ts b/src/file/track-revision/track-revision-components/deleted-text-run.spec.ts index 0a6877fdd5..6bd11c24d7 100644 --- a/src/file/track-revision/track-revision-components/deleted-text-run.spec.ts +++ b/src/file/track-revision/track-revision-components/deleted-text-run.spec.ts @@ -89,11 +89,12 @@ describe("DeletedTextRun", () => { describe("#break()", () => { it("should add a break", () => { const deletedTextRun = new DeletedTextRun({ + break: 1, children: ["some text"], id: 0, date: "123", author: "Author", - }).break(); + }); const tree = new Formatter().format(deletedTextRun); expect(tree).to.deep.equal({ "w:del": [ diff --git a/src/file/track-revision/track-revision-components/deleted-text-run.ts b/src/file/track-revision/track-revision-components/deleted-text-run.ts index 56d384b31b..7830d3d63c 100644 --- a/src/file/track-revision/track-revision-components/deleted-text-run.ts +++ b/src/file/track-revision/track-revision-components/deleted-text-run.ts @@ -1,6 +1,6 @@ import { XmlComponent } from "file/xml-components"; -import { FootnoteReferenceRun, IRunOptions, IRunPropertiesOptions, RunProperties } from "../../index"; +import { IRunOptions, RunProperties } from "../../index"; import { Break } from "../../paragraph/run/break"; import { Begin, End, Separate } from "../../paragraph/run/field"; import { PageNumber } from "../../paragraph/run/run"; @@ -8,10 +8,7 @@ import { ChangeAttributes, IChangedAttributesProperties } from "../track-revisio import { DeletedNumberOfPages, DeletedNumberOfPagesSection, DeletedPage } from "./deleted-page-number"; import { DeletedText } from "./deleted-text"; -interface IDeletedRunOptions extends IRunPropertiesOptions, IChangedAttributesProperties { - readonly children?: (Begin | Separate | End | PageNumber | FootnoteReferenceRun | string)[]; - readonly text?: string; -} +interface IDeletedRunOptions extends IRunOptions, IChangedAttributesProperties {} export class DeletedTextRun extends XmlComponent { protected readonly deletedTextRunWrapper: DeletedTextRunWrapper; @@ -25,14 +22,9 @@ export class DeletedTextRun extends XmlComponent { date: options.date, }), ); - this.deletedTextRunWrapper = new DeletedTextRunWrapper(options as IRunOptions); + this.deletedTextRunWrapper = new DeletedTextRunWrapper(options); this.addChildElement(this.deletedTextRunWrapper); } - - public break(): DeletedTextRun { - this.deletedTextRunWrapper.break(); - return this; - } } class DeletedTextRunWrapper extends XmlComponent { @@ -74,9 +66,11 @@ class DeletedTextRunWrapper extends XmlComponent { } else if (options.text) { this.root.push(new DeletedText(options.text)); } - } - public break(): void { - this.root.splice(1, 0, new Break()); + if (options.break) { + for (let i = 0; i < options.break; i++) { + this.root.splice(1, 0, new Break()); + } + } } }