added border

This commit is contained in:
Dolan Miu
2016-03-29 04:50:23 +01:00
parent 672cbb6922
commit e2929bc3a9
6 changed files with 92 additions and 10 deletions

24
ts/docx/border.ts Normal file
View File

@ -0,0 +1,24 @@
import {P, Attributes} from "./xml-components";
class Border implements P {
private bottom: Array<P>;
constructor() {
this.bottom = new Array<P>();
this.bottom.push(new Attributes({
color: "auto",
space: "1",
val: "single",
sz: "6"
}));
}
}
export class ThematicBreak {
private pBdr: Array<P>;
constructor() {
this.pBdr = new Array<P>();
this.pBdr.push(new Border());
}
}

View File

@ -5,7 +5,9 @@ class Style {
constructor(type: string) {
this.pStyle = new Array<P>();
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<P>();
this.jc.push(new Attributes(type));
this.jc.push(new Attributes({
val: type
}));
}
}

View File

@ -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<P>;
constructor() {
this.pPr = new Array<P>();
this.pPr.push(new Attributes());
}
push(item: P) {
this.pPr.push(item);
}

View File

@ -1,6 +1,6 @@
/// <reference path="../typings/mocha/mocha.d.ts" />
/// <reference path="../typings/chai/chai.d.ts" />
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");

34
ts/tests/borderTest.ts Normal file
View File

@ -0,0 +1,34 @@
/// <reference path="../typings/mocha/mocha.d.ts" />
/// <reference path="../typings/chai/chai.d.ts" />
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));
});
})
});

View File

@ -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");
});
});
});