Files
docx-js/ts/export/formatter.ts
2016-03-31 04:33:06 +01:00

45 lines
1.1 KiB
TypeScript

import * as _ from "lodash";
export class Formatter {
private xmlKeyDictionary = {
p: 'w:p'
};
format(input: any) {
var stringified = JSON.stringify(input);
var newJson = JSON.parse(stringified);
this.deepTraverseJson(newJson, (parent, value, key) => {
if (isNaN(key)) {
var newKey = this.getReplacementKey(key);
parent[newKey] = parent[key];
if (newKey !== key) {
delete parent[key];
}
}
});
console.log(newJson);
return newJson;
}
private deepTraverseJson(json: Object, lambda: (json: any, value: any, key: any) => void) {
_.forOwn(json, (value, key) => {
if (_.isObject(value)) {
this.deepTraverseJson(value, lambda);
}
lambda(json, value, key);
});
}
private getReplacementKey(key: string): string {
var newKey = this.xmlKeyDictionary[key];
if (newKey !== undefined) {
return newKey;
} else {
return key;
}
}
}