diff --git a/ts/docx/border.ts b/ts/docx/border.ts new file mode 100644 index 0000000000..deedd98fba --- /dev/null +++ b/ts/docx/border.ts @@ -0,0 +1,24 @@ +import {P, Attributes} from "./xml-components"; + +class Border implements P { + private bottom: Array

; + + constructor() { + this.bottom = new Array

(); + this.bottom.push(new Attributes({ + color: "auto", + space: "1", + val: "single", + sz: "6" + })); + } +} + +export class ThematicBreak { + private pBdr: Array

; + + constructor() { + this.pBdr = new Array

(); + this.pBdr.push(new Border()); + } +} \ No newline at end of file diff --git a/ts/docx/paragraph.ts b/ts/docx/paragraph.ts index 024c34fd50..308aaecf66 100644 --- a/ts/docx/paragraph.ts +++ b/ts/docx/paragraph.ts @@ -5,7 +5,9 @@ class Style { constructor(type: string) { this.pStyle = new Array

(); - this.pStyle.push(new Attributes(type)); + this.pStyle.push(new Attributes({ + val: type + })); } } @@ -14,7 +16,9 @@ class Alignment { constructor(type: string) { this.jc = new Array

(); - this.jc.push(new Attributes(type)); + this.jc.push(new Attributes({ + val: type + })); } } diff --git a/ts/docx/xml-components/index.ts b/ts/docx/xml-components/index.ts index c2f18b077a..cb4363f5f5 100644 --- a/ts/docx/xml-components/index.ts +++ b/ts/docx/xml-components/index.ts @@ -2,24 +2,33 @@ export interface P { } +interface AttributesProperties { + val?: string; + color?: string; + space?: string; + sz?: string; +} + export class Attributes implements P { private _attrs: Object; - constructor(value?: string) { - this._attrs = { - val: value - }; + constructor(properties?: AttributesProperties) { + this._attrs = properties + + if (!properties) { + this._attrs = {}; + } } } -export class ParagraphProperties implements P{ +export class ParagraphProperties implements P { private pPr: Array

; constructor() { this.pPr = new Array

(); this.pPr.push(new Attributes()); } - + push(item: P) { this.pPr.push(item); } diff --git a/ts/tests/attributeTest.ts b/ts/tests/attributeTest.ts index 9436e51bff..24eb317eee 100644 --- a/ts/tests/attributeTest.ts +++ b/ts/tests/attributeTest.ts @@ -1,6 +1,6 @@ /// /// -import {Attributes} from "../docx/xml-components/p"; +import {Attributes} from "../docx/xml-components"; import {assert} from "chai"; describe('Attribute', () => { @@ -20,7 +20,9 @@ describe('Attribute', () => { }); it("should have val as defined with populated constructor", () => { - var newAttrs = new Attributes("test"); + var newAttrs = new Attributes({ + val: "test" + }); var stringifiedJson = JSON.stringify(newAttrs); var newJson = JSON.parse(stringifiedJson); assert(newJson._attrs.val === "test"); diff --git a/ts/tests/borderTest.ts b/ts/tests/borderTest.ts new file mode 100644 index 0000000000..a0e92102f3 --- /dev/null +++ b/ts/tests/borderTest.ts @@ -0,0 +1,34 @@ +/// +/// +import {ThematicBreak} from "../docx/border"; +import {assert} from "chai"; + +function jsonify(obj: Object) { + var stringifiedJson = JSON.stringify(obj); + return JSON.parse(stringifiedJson); +} + +describe("Border", () => { + +}); + +describe("ThematicBreak", () => { + var thematicBreak: ThematicBreak; + + beforeEach(() => { + thematicBreak = new ThematicBreak(); + }); + + describe("#constructor()", () => { + it("should create a Thematic Break with correct border properties", () => { + var newJson = jsonify(thematicBreak); + var attributes = { + color: "auto", + space: "1", + val: "single", + sz: "6" + }; + assert(JSON.stringify(newJson.pBdr[0].bottom[0]._attrs) === JSON.stringify(attributes)); + }); + }) +}); \ No newline at end of file diff --git a/ts/tests/paragraphTest.ts b/ts/tests/paragraphTest.ts index 9494f679db..f7d3966b3d 100644 --- a/ts/tests/paragraphTest.ts +++ b/ts/tests/paragraphTest.ts @@ -67,4 +67,13 @@ describe('Paragraph', () => { assert(newJson.p[1].pPr[1].pStyle[0]._attrs.val === "Title"); }); }); + + describe("#center()", () => { + it("should add center alignment to JSON", () => { + paragraph.center(); + var newJson = jsonify(paragraph); + + assert(newJson.p[1].pPr[1].jc[0]._attrs.val === "center"); + }); + }); }); \ No newline at end of file