From 3077ca96a7db15938a72ab90b4847606da87b744 Mon Sep 17 00:00:00 2001 From: Dolan Miu Date: Sat, 4 Feb 2023 22:11:47 +0000 Subject: [PATCH 1/5] Use next attribute component --- .../table-float-properties.spec.ts | 4 +- .../table-float-properties.ts | 69 +++++++++++++------ 2 files changed, 50 insertions(+), 23 deletions(-) diff --git a/src/file/table/table-properties/table-float-properties.spec.ts b/src/file/table/table-properties/table-float-properties.spec.ts index ccc8cb77ef..c64e1be446 100644 --- a/src/file/table/table-properties/table-float-properties.spec.ts +++ b/src/file/table/table-properties/table-float-properties.spec.ts @@ -38,9 +38,7 @@ describe("Table Float Properties", () => { expect(tree).to.deep.equal({ "w:tblpPr": [ { - _attr: { - overlap: "never", - }, + _attr: {}, }, { "w:tblOverlap": { diff --git a/src/file/table/table-properties/table-float-properties.ts b/src/file/table/table-properties/table-float-properties.ts index e7f32dc572..38595e3e98 100644 --- a/src/file/table/table-properties/table-float-properties.ts +++ b/src/file/table/table-properties/table-float-properties.ts @@ -1,4 +1,4 @@ -import { StringEnumValueElement, XmlAttributeComponent, XmlComponent } from "@file/xml-components"; +import { NextAttributeComponent, StringEnumValueElement, XmlAttributeComponent, XmlComponent } from "@file/xml-components"; import { PositiveUniversalMeasure, signedTwipsMeasureValue, twipsMeasureValue, UniversalMeasure } from "@util/values"; export enum TableAnchorType { @@ -35,7 +35,7 @@ export enum OverlapType { OVERLAP = "overlap", } -export interface ITableFloatOptions { +export type ITableFloatOptions = { /* cSpell:disable */ /** * Specifies the horizontal anchor or the base object from which the horizontal positioning in the @@ -124,7 +124,7 @@ export interface ITableFloatOptions { */ readonly rightFromText?: number | PositiveUniversalMeasure; readonly overlap?: OverlapType; -} +}; // // @@ -156,34 +156,63 @@ export class TableFloatOptionsAttributes extends XmlAttributeComponent>({ + leftFromText: { key: "w:leftFromText", value: leftFromText === undefined ? undefined : twipsMeasureValue(leftFromText) }, + rightFromText: { + key: "w:rightFromText", + value: rightFromText === undefined ? undefined : twipsMeasureValue(rightFromText), + }, + topFromText: { key: "w:topFromText", value: topFromText === undefined ? undefined : twipsMeasureValue(topFromText) }, + bottomFromText: { + key: "w:bottomFromText", + value: bottomFromText === undefined ? undefined : twipsMeasureValue(bottomFromText), + }, + absoluteHorizontalPosition: { + key: "w:tblpX", + value: absoluteHorizontalPosition === undefined ? undefined : signedTwipsMeasureValue(absoluteHorizontalPosition), + }, + absoluteVerticalPosition: { + key: "w:tblpY", + value: absoluteVerticalPosition === undefined ? undefined : signedTwipsMeasureValue(absoluteVerticalPosition), + }, + horizontalAnchor: { + key: "w:horzAnchor", + value: horizontalAnchor === undefined ? undefined : horizontalAnchor, + }, + relativeHorizontalPosition: { + key: "w:tblpXSpec", + value: relativeHorizontalPosition, + }, + relativeVerticalPosition: { + key: "w:tblpYSpec", + value: relativeVerticalPosition, + }, + verticalAnchor: { + key: "w:vertAnchor", + value: verticalAnchor, + }, }), ); - if (options.overlap) { + if (overlap) { // // // - this.root.push(new StringEnumValueElement("w:tblOverlap", options.overlap)); + this.root.push(new StringEnumValueElement("w:tblOverlap", overlap)); } } } From 3f979b9981c8f8d03e29978a6bb258dbaccaa2fa Mon Sep 17 00:00:00 2001 From: Dolan Miu Date: Sat, 4 Feb 2023 22:48:33 +0000 Subject: [PATCH 2/5] Remove unused code --- .../table-properties/table-float-properties.ts | 17 +---------------- 1 file changed, 1 insertion(+), 16 deletions(-) diff --git a/src/file/table/table-properties/table-float-properties.ts b/src/file/table/table-properties/table-float-properties.ts index 38595e3e98..1cd5e75df3 100644 --- a/src/file/table/table-properties/table-float-properties.ts +++ b/src/file/table/table-properties/table-float-properties.ts @@ -1,4 +1,4 @@ -import { NextAttributeComponent, StringEnumValueElement, XmlAttributeComponent, XmlComponent } from "@file/xml-components"; +import { NextAttributeComponent, StringEnumValueElement, XmlComponent } from "@file/xml-components"; import { PositiveUniversalMeasure, signedTwipsMeasureValue, twipsMeasureValue, UniversalMeasure } from "@util/values"; export enum TableAnchorType { @@ -139,21 +139,6 @@ export type ITableFloatOptions = { // // -export class TableFloatOptionsAttributes extends XmlAttributeComponent { - protected readonly xmlKeys = { - horizontalAnchor: "w:horzAnchor", - verticalAnchor: "w:vertAnchor", - absoluteHorizontalPosition: "w:tblpX", - relativeHorizontalPosition: "w:tblpXSpec", - absoluteVerticalPosition: "w:tblpY", - relativeVerticalPosition: "w:tblpYSpec", - bottomFromText: "w:bottomFromText", - topFromText: "w:topFromText", - leftFromText: "w:leftFromText", - rightFromText: "w:rightFromText", - }; -} - export class TableFloatProperties extends XmlComponent { public constructor({ horizontalAnchor, From 7ec9cff433fd7b62d9b9d8c85791b15dc1d310df Mon Sep 17 00:00:00 2001 From: Dolan Miu Date: Sat, 4 Feb 2023 23:50:37 +0000 Subject: [PATCH 3/5] Add tests for BuilderElement --- .../xml-components/simple-elements.spec.ts | 41 +++++++++++++++++++ src/file/xml-components/simple-elements.ts | 2 + 2 files changed, 43 insertions(+) create mode 100644 src/file/xml-components/simple-elements.spec.ts diff --git a/src/file/xml-components/simple-elements.spec.ts b/src/file/xml-components/simple-elements.spec.ts new file mode 100644 index 0000000000..e87f8a4937 --- /dev/null +++ b/src/file/xml-components/simple-elements.spec.ts @@ -0,0 +1,41 @@ +import { expect } from "chai"; + +import { Formatter } from "@export/formatter"; + +import { BuilderElement } from "./simple-elements"; + +describe("BuilderElement", () => { + describe.only("#constructor()", () => { + it("should create a simple BuilderElement", () => { + const element = new BuilderElement({ + name: "test", + }); + + const tree = new Formatter().format(element); + expect(tree).to.deep.equal({ + test: {}, + }); + }); + + it("should create a simple BuilderElement with attributes", () => { + const element = new BuilderElement<{ testAttr: string }>({ + name: "test", + attributes: { + testAttr: { + key: "w:testAttr", + value: "test", + }, + }, + }); + + const tree = new Formatter().format(element); + expect(tree).to.deep.equal({ + test: { + _attr: { + "w:testAttr": "test", + }, + }, + }); + }); + }); +}); diff --git a/src/file/xml-components/simple-elements.ts b/src/file/xml-components/simple-elements.ts index 6ed117b7ba..dab6f618bc 100644 --- a/src/file/xml-components/simple-elements.ts +++ b/src/file/xml-components/simple-elements.ts @@ -92,5 +92,7 @@ export class BuilderElement extends XmlComponent { if (options.attributes) { this.root.push(new NextAttributeComponent(options.attributes)); } + + // TODO: Children } } From 2c21f64b9f40f3b60b36e6c8fc45a97ddf6bed2d Mon Sep 17 00:00:00 2001 From: Dolan Miu Date: Sat, 4 Feb 2023 23:50:59 +0000 Subject: [PATCH 4/5] Remove only --- src/file/xml-components/simple-elements.spec.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/file/xml-components/simple-elements.spec.ts b/src/file/xml-components/simple-elements.spec.ts index e87f8a4937..1a459ee815 100644 --- a/src/file/xml-components/simple-elements.spec.ts +++ b/src/file/xml-components/simple-elements.spec.ts @@ -5,7 +5,7 @@ import { Formatter } from "@export/formatter"; import { BuilderElement } from "./simple-elements"; describe("BuilderElement", () => { - describe.only("#constructor()", () => { + describe("#constructor()", () => { it("should create a simple BuilderElement", () => { const element = new BuilderElement({ name: "test", From 8cbc6c15feb06f1a5ea542178e63d29a81b33c1e Mon Sep 17 00:00:00 2001 From: Dolan Miu Date: Sat, 4 Feb 2023 23:53:37 +0000 Subject: [PATCH 5/5] Fix linting --- src/file/xml-components/simple-elements.spec.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/file/xml-components/simple-elements.spec.ts b/src/file/xml-components/simple-elements.spec.ts index 1a459ee815..049389a353 100644 --- a/src/file/xml-components/simple-elements.spec.ts +++ b/src/file/xml-components/simple-elements.spec.ts @@ -18,7 +18,7 @@ describe("BuilderElement", () => { }); it("should create a simple BuilderElement with attributes", () => { - const element = new BuilderElement<{ testAttr: string }>({ + const element = new BuilderElement<{ readonly testAttr: string }>({ name: "test", attributes: { testAttr: {