fixed attribute

This commit is contained in:
Dolan Miu
2016-04-05 01:49:12 +01:00
parent d197a2c717
commit d4c2b10285
9 changed files with 46 additions and 24 deletions

View File

@ -4,7 +4,7 @@ export class SectionProperties implements XmlComponent {
private sectPr: Array<XmlComponent>;
xmlKeys = {
sectPr: 'sectPr'
sectPr: 'w:sectPr'
}
constructor() {

View File

@ -3,9 +3,14 @@ import {DocumentAttributes} from "../xml-components/document-attributes"
import {Body} from "./body";
import {Paragraph} from "../paragraph";
export class Document {
export class Document implements XmlComponent {
private document: Array<XmlComponent>;
private body: Body;
xmlKeys = {
document: "w:document",
body: "w:body"
};
constructor() {
this.document = new Array<XmlComponent>();

View File

@ -27,7 +27,7 @@ interface DocumentAttributesProperties {
}
export class DocumentAttributes implements XmlComponent {
private _attrs: Object;
private _attr: Object;
xmlKeys = {
wpc: 'xmlns:wpc',
@ -56,11 +56,11 @@ export class DocumentAttributes implements XmlComponent {
};
constructor(properties?: DocumentAttributesProperties) {
this._attrs = properties
this._attr = properties
if (!properties) {
this._attrs = {};
this._attr = {};
}
this._attrs["xmlKeys"] = this.xmlKeys;
this._attr["xmlKeys"] = this.xmlKeys;
}
}

View File

@ -24,7 +24,7 @@ interface AttributesProperties {
}
export class Attributes implements XmlComponent {
private _attrs: Object;
private _attr: Object;
xmlKeys = {
val: "w:val",
@ -48,13 +48,13 @@ export class Attributes implements XmlComponent {
};
constructor(properties?: AttributesProperties) {
this._attrs = properties
this._attr = properties
if (!properties) {
this._attrs = {};
this._attr = {};
}
this._attrs["xmlKeys"] = this.xmlKeys;
this._attr["xmlKeys"] = this.xmlKeys;
}
}

View File

@ -1,12 +1,13 @@
import {Packer} from "./packer";
import * as fs from 'fs';
import {Document} from "../../docx/document";
import {Properties} from "../../properties";
export class LocalPacker extends Packer {
private stream: fs.WriteStream
constructor(document: Document, path: string) {
super(document, null, null);
constructor(document: Document, style: any, properties: Properties, path: string) {
super(document, null, properties);
this.stream = fs.createWriteStream(path);
}

View File

@ -1,5 +1,6 @@
import * as archiver from "archiver";
import * as fs from "fs";
import * as xml from "xml";
import {Formatter} from "../formatter";
import {Document} from "../../docx";
import {Style} from "../../style";
@ -36,16 +37,20 @@ export abstract class Packer {
]);
//this.archive.directory(__dirname + "/template", "/");
this.archive.append(this.document, {
var xmlDocument = xml(this.formatter.format(this.document));
//var xmlStyle = xml(this.style);
var xmlProperties = xml(this.formatter.format(this.properties));
console.log(JSON.stringify(this.formatter.format(this.document), null, " "));
console.log(xmlDocument);
this.archive.append(xmlDocument, {
name: 'word/document.xml'
});
this.archive.append(this.style, {
name: 'word/newStyle.xml'
});
//this.archive.append(xmlStyle, {
// name: 'word/newStyle.xml'
//});
this.archive.append(this.properties, {
this.archive.append(xmlProperties, {
name: 'docProps/core.xml'
});

View File

@ -28,6 +28,7 @@ describe("ThematicBreak", () => {
val: "single",
sz: "6"
};
delete newJson.pBdr[0].bottom[0]._attrs.xmlKeys;
assert(JSON.stringify(newJson.pBdr[0].bottom[0]._attrs) === JSON.stringify(attributes));
});
})

View File

@ -26,11 +26,16 @@ describe("Formatter", () => {
var paragraph = new docx.Paragraph();
var newJson = formatter.format(paragraph);
newJson = jsonify(newJson);
console.log(JSON.stringify(newJson, null, " "));
assert.isDefined(newJson["w:p"]);
});
it("should remove xmlKeys", () => {
var paragraph = new docx.Paragraph();
var newJson = formatter.format(paragraph);
var stringifiedJson = JSON.stringify(newJson);
assert(stringifiedJson.indexOf("xmlKeys") < 0);
});
it("should format simple paragraph with bold text", () => {
var paragraph = new docx.Paragraph();
paragraph.addText(new docx.TextRun("test").bold());
@ -62,14 +67,14 @@ describe("Formatter", () => {
assert.isDefined(newJson["w:p"]);
});
it.only("should format Properties object correctly", () => {
it("should format Properties object correctly", () => {
var properties = new Properties({
title: "test document",
creator: "Dolan"
});
var newJson = formatter.format(properties);
newJson = jsonify(newJson);
console.log(JSON.stringify(newJson, null, " "));
assert.isDefined(newJson["cp:coreProperties"]);
});
});
});

View File

@ -1,17 +1,22 @@
/// <reference path="../typings/mocha/mocha.d.ts" />
/// <reference path="../typings/chai/chai.d.ts" />
/// <reference path="../typings/archiver/archiver.d.ts" />
/// <reference path="../typings/xml/xml.d.ts" />
import {LocalPacker} from "../export/packer/local";
import {assert} from "chai";
import {Document} from "../docx/document"
import {Properties} from "../properties"
describe("Packer", () => {
describe.only("Packer", () => {
var packer: LocalPacker;
beforeEach(() => {
var document = new Document();
packer = new LocalPacker(document, "build/tests/test.zip");
var properties = new Properties({
title: "test document"
});
packer = new LocalPacker(document, undefined, properties, "build/tests/test.zip");
});
describe('#pack()', () => {