Fix styling and linting

This commit is contained in:
Dolan Miu
2018-05-06 03:19:36 +01:00
parent 79b5b3a1f6
commit 573dd753a7
14 changed files with 112 additions and 81 deletions

View File

@ -11,7 +11,44 @@ export class Media {
this.map = new Map<string, IMediaData>(); this.map = new Map<string, IMediaData>();
} }
private createMedia(key: string, relationshipsCount, dimensions, data: fs.ReadStream | Buffer, filePath?: string, ) { public getMedia(key: string): IMediaData {
const data = this.map.get(key);
if (data === undefined) {
throw new Error(`Cannot find image with the key ${key}`);
}
return data;
}
public addMedia(filePath: string, relationshipsCount: number): IMediaData {
const key = path.basename(filePath);
const dimensions = sizeOf(filePath);
return this.createMedia(key, relationshipsCount, dimensions, fs.createReadStream(filePath), filePath);
}
public addMediaWithData(fileName: string, data: Buffer, relationshipsCount: number, width?: number, height?: number): IMediaData {
const key = fileName;
let dimensions;
if (width && height) {
dimensions = {
width: width,
height: height,
};
} else {
dimensions = sizeOf(data);
}
return this.createMedia(key, relationshipsCount, dimensions, data);
}
private createMedia(
key: string,
relationshipsCount: number,
dimensions: { width: number; height: number },
data: fs.ReadStream | Buffer,
filePath?: string,
): IMediaData {
const imageData = { const imageData = {
referenceId: this.map.size + relationshipsCount + 1, referenceId: this.map.size + relationshipsCount + 1,
stream: data, stream: data,
@ -32,36 +69,6 @@ export class Media {
return imageData; return imageData;
} }
public getMedia(key: string): IMediaData {
const data = this.map.get(key);
if (data === undefined) {
throw new Error(`Cannot find image with the key ${key}`);
}
return data;
}
public addMedia(filePath: string, relationshipsCount: number): IMediaData {
const key = path.basename(filePath);
const dimensions = sizeOf(filePath);
return this.createMedia(key, relationshipsCount, dimensions, fs.createReadStream(filePath), filePath);
}
public addMediaWithData(fileName: string, data: Buffer, relationshipsCount: number, width?, height?): IMediaData {
const key = fileName;
let dimensions;
if (width && height) {
dimensions = {
width: width,
height: height
}
} else {
dimensions = sizeOf(data);
}
return this.createMedia(key, relationshipsCount, dimensions, data);
}
public get array(): IMediaData[] { public get array(): IMediaData[] {
const array = new Array<IMediaData>(); const array = new Array<IMediaData>();

View File

@ -154,7 +154,6 @@ describe("External styles factory", () => {
], ],
rootKey: "w:style", rootKey: "w:style",
}); });
}); });
}); });
}); });

View File

@ -1,6 +1,7 @@
import { Styles } from "./";
import * as fastXmlParser from "fast-xml-parser"; import * as fastXmlParser from "fast-xml-parser";
import { ImportedXmlComponent, ImportedRootElementAttributes } from "./../../file/xml-components";
import { Styles } from "./";
import { ImportedRootElementAttributes, ImportedXmlComponent } from "./../../file/xml-components";
const parseOptions = { const parseOptions = {
ignoreAttributes: false, ignoreAttributes: false,
@ -51,7 +52,8 @@ export class ExternalStylesFactory {
return importedStyle; return importedStyle;
} }
convertElement(elementName: string, element: any): ImportedXmlComponent { // tslint:disable-next-line:no-any
public convertElement(elementName: string, element: any): ImportedXmlComponent {
const xmlElement = new ImportedXmlComponent(elementName, element._attr); const xmlElement = new ImportedXmlComponent(elementName, element._attr);
if (typeof element === "object") { if (typeof element === "object") {
Object.keys(element) Object.keys(element)

View File

@ -1,7 +1,6 @@
import { Color, Italics, Size } from "../paragraph/run/formatting";
import { Styles } from "./";
import { DocumentAttributes } from "../document/document-attributes"; import { DocumentAttributes } from "../document/document-attributes";
import { Color, Italics, Size } from "../paragraph/run/formatting";
import { Styles } from "./";
import { import {
Heading1Style, Heading1Style,

View File

@ -1,12 +1,12 @@
import { XmlComponent, BaseXmlComponent } from "file/xml-components"; import { BaseXmlComponent, XmlComponent } from "file/xml-components";
import { DocumentDefaults } from "./defaults"; import { DocumentDefaults } from "./defaults";
import { ParagraphStyle } from "./style"; import { ParagraphStyle } from "./style";
export class Styles extends XmlComponent { export class Styles extends XmlComponent {
constructor(_initialStyles?: BaseXmlComponent) { constructor(initialStyles?: BaseXmlComponent) {
super("w:styles"); super("w:styles");
if (_initialStyles) { if (initialStyles) {
this.root.push(_initialStyles); this.root.push(initialStyles);
} }
} }

View File

@ -1,2 +1,2 @@
export * from "./table"; export * from "./table";
export * from './table-cell'; export * from "./table-cell";

View File

@ -169,13 +169,13 @@ describe("TableCellWidth", () => {
expect(tree).to.deep.equal({ expect(tree).to.deep.equal({
"w:tcW": [ "w:tcW": [
{ {
"_attr": { _attr: {
"w:type": "dxa", "w:type": "dxa",
"w:w": 100 "w:w": 100,
} },
} },
] ],
}); });
}); });
}); });
}); });

View File

@ -1,4 +1,4 @@
import { XmlComponent, XmlAttributeComponent, IXmlableObject } from "file/xml-components"; import { IXmlableObject, XmlAttributeComponent, XmlComponent } from "file/xml-components";
export enum BorderStyle { export enum BorderStyle {
SINGLE = "single", SINGLE = "single",
@ -41,13 +41,15 @@ class CellBorderAttributes extends XmlAttributeComponent<ICellBorder> {
} }
class BaseTableCellBorder extends XmlComponent { class BaseTableCellBorder extends XmlComponent {
setProperties(style: BorderStyle, size: number, color: string) { public setProperties(style: BorderStyle, size: number, color: string): BaseTableCellBorder {
let attrs = new CellBorderAttributes({ const attrs = new CellBorderAttributes({
style: style, style: style,
size: size, size: size,
color: color, color: color,
}); });
this.root.push(attrs); this.root.push(attrs);
return this;
} }
} }
@ -60,28 +62,36 @@ export class TableCellBorders extends XmlComponent {
return this.root.length > 0 ? super.prepForXml() : ""; return this.root.length > 0 ? super.prepForXml() : "";
} }
addTopBorder(style: BorderStyle, size: number, color: string) { public addTopBorder(style: BorderStyle, size: number, color: string): TableCellBorders {
const top = new BaseTableCellBorder("w:top"); const top = new BaseTableCellBorder("w:top");
top.setProperties(style, size, color); top.setProperties(style, size, color);
this.root.push(top); this.root.push(top);
return this;
} }
addStartBorder(style: BorderStyle, size: number, color: string) { public addStartBorder(style: BorderStyle, size: number, color: string): TableCellBorders {
const start = new BaseTableCellBorder("w:start"); const start = new BaseTableCellBorder("w:start");
start.setProperties(style, size, color); start.setProperties(style, size, color);
this.root.push(start); this.root.push(start);
return this;
} }
addBottomBorder(style: BorderStyle, size: number, color: string) { public addBottomBorder(style: BorderStyle, size: number, color: string): TableCellBorders {
const bottom = new BaseTableCellBorder("w:bottom"); const bottom = new BaseTableCellBorder("w:bottom");
bottom.setProperties(style, size, color); bottom.setProperties(style, size, color);
this.root.push(bottom); this.root.push(bottom);
return this;
} }
addEndBorder(style: BorderStyle, size: number, color: string) { public addEndBorder(style: BorderStyle, size: number, color: string): TableCellBorders {
const end = new BaseTableCellBorder("w:end"); const end = new BaseTableCellBorder("w:end");
end.setProperties(style, size, color); end.setProperties(style, size, color);
this.root.push(end); this.root.push(end);
return this;
} }
} }

View File

@ -1,8 +1,8 @@
import { GridSpan, TableCellBorders, TableCellWidth, VAlign, VerticalAlign, VMerge, VMergeType, WidthType } from "file/table/table-cell";
import { IXmlableObject, XmlComponent } from "file/xml-components"; import { IXmlableObject, XmlComponent } from "file/xml-components";
import { Paragraph } from "../paragraph"; import { Paragraph } from "../paragraph";
import { TableGrid } from "./grid"; import { TableGrid } from "./grid";
import { TableProperties, WidthTypes } from "./properties"; import { TableProperties, WidthTypes } from "./properties";
import { TableCellBorders, GridSpan, VMerge, VMergeType, VerticalAlign, VAlign, TableCellWidth, WidthType } from "file/table/table-cell";
export class Table extends XmlComponent { export class Table extends XmlComponent {
private readonly properties: TableProperties; private readonly properties: TableProperties;
@ -119,7 +119,7 @@ export class TableCell extends XmlComponent {
return para; return para;
} }
get cellProperties() { get cellProperties(): TableCellProperties {
return this.properties; return this.properties;
} }
} }
@ -132,22 +132,31 @@ export class TableCellProperties extends XmlComponent {
this.root.push(this.cellBorder); this.root.push(this.cellBorder);
} }
get borders() { get borders(): TableCellBorders {
return this.cellBorder; return this.cellBorder;
} }
addGridSpan(cellSpan: number) {
public addGridSpan(cellSpan: number): TableCellProperties {
this.root.push(new GridSpan(cellSpan)); this.root.push(new GridSpan(cellSpan));
return this;
} }
addVerticalMerge(type: VMergeType) { public addVerticalMerge(type: VMergeType): TableCellProperties {
this.root.push(new VMerge(type)); this.root.push(new VMerge(type));
return this;
} }
setVerticalAlign(vAlignType: VerticalAlign) { public setVerticalAlign(vAlignType: VerticalAlign): TableCellProperties {
this.root.push(new VAlign(vAlignType)); this.root.push(new VAlign(vAlignType));
return this;
} }
setWidth(width: string | number, type: WidthType) { public setWidth(width: string | number, type: WidthType): TableCellProperties {
this.root.push(new TableCellWidth(width, type)); this.root.push(new TableCellWidth(width, type));
return this;
} }
} }

View File

@ -10,7 +10,7 @@ export abstract class BaseXmlComponent {
public abstract prepForXml(): IXmlableObject; public abstract prepForXml(): IXmlableObject;
get isDeleted() { public get isDeleted(): boolean {
return this.deleted; return this.deleted;
} }
} }

View File

@ -1,15 +1,17 @@
import { XmlComponent, IXmlableObject } from "."; // tslint:disable:no-any
import { IXmlableObject, XmlComponent } from "./";
/** /**
* Represents imported xml component from xml file. * Represents imported xml component from xml file.
*/ */
export class ImportedXmlComponent extends XmlComponent { export class ImportedXmlComponent extends XmlComponent {
private _attr: any; private attr: any;
constructor(rootKey: string, _attr?: any) { constructor(rootKey: string, attr?: any) {
super(rootKey); super(rootKey);
if (_attr) {
this._attr = _attr; if (attr) {
this.attr = attr;
} }
} }
@ -39,18 +41,18 @@ export class ImportedXmlComponent extends XmlComponent {
* ] * ]
* } * }
*/ */
prepForXml(): IXmlableObject { public prepForXml(): IXmlableObject {
const result = super.prepForXml(); const result = super.prepForXml();
if (!!this._attr) { if (!!this.attr) {
if (!Array.isArray(result[this.rootKey])) { if (!Array.isArray(result[this.rootKey])) {
result[this.rootKey] = [result[this.rootKey]]; result[this.rootKey] = [result[this.rootKey]];
} }
result[this.rootKey].unshift({ _attr: this._attr }); result[this.rootKey].unshift({ _attr: this.attr });
} }
return result; return result;
} }
push(xmlComponent: XmlComponent) { public push(xmlComponent: XmlComponent): void {
this.root.push(xmlComponent); this.root.push(xmlComponent);
} }
} }
@ -59,13 +61,13 @@ export class ImportedXmlComponent extends XmlComponent {
* Used for the attributes of root element that is being imported. * Used for the attributes of root element that is being imported.
*/ */
export class ImportedRootElementAttributes extends XmlComponent { export class ImportedRootElementAttributes extends XmlComponent {
constructor(private _attr: any) { constructor(private attr: any) {
super(""); super("");
} }
public prepForXml(): IXmlableObject { public prepForXml(): IXmlableObject {
return { return {
_attr: this._attr, _attr: this.attr,
}; };
} }
} }

View File

@ -1,5 +1,5 @@
export * from "./xml-component"; export * from "./xml-component";
export * from "./attributes"; export * from "./attributes";
export * from "./default-attributes"; export * from "./default-attributes";
export * from './imported-xml-component'; export * from "./imported-xml-component";
export * from "./xmlable-object"; export * from "./xmlable-object";

View File

@ -24,9 +24,9 @@ describe("XmlComponent", () => {
const child = new TestComponent("w:test1"); const child = new TestComponent("w:test1");
child.delete(); child.delete();
xmlComponent.addChildElement(child); xmlComponent.addChildElement(child);
const xml = xmlComponent.prepForXml(); const xml = xmlComponent.prepForXml();
assert.equal(xml['w:test'].length, 0); assert.equal(xml["w:test"].length, 0);
}); });
}); });
}); });

View File

@ -12,7 +12,7 @@ export abstract class XmlComponent extends BaseXmlComponent {
public prepForXml(): IXmlableObject { public prepForXml(): IXmlableObject {
const children = this.root const children = this.root
.filter(c => { .filter((c) => {
if (c instanceof BaseXmlComponent) { if (c instanceof BaseXmlComponent) {
return !c.isDeleted; return !c.isDeleted;
} }
@ -30,11 +30,14 @@ export abstract class XmlComponent extends BaseXmlComponent {
}; };
} }
public addChildElement(child: XmlComponent | string) { // TODO: Unused method
public addChildElement(child: XmlComponent | string): XmlComponent {
this.root.push(child); this.root.push(child);
return this;
} }
public delete() { public delete(): void {
this.deleted = true; this.deleted = true;
} }
} }