From 8cb8d3514acb86ffc139a6ecbbcf615aa7d7bbe0 Mon Sep 17 00:00:00 2001 From: Dolan Date: Mon, 11 Jun 2018 00:45:21 +0100 Subject: [PATCH] Add footnotes class --- .../footnotes/footnote/footnote-attributes.ts | 13 +++++ src/file/footnotes/footnote/footnote.ts | 19 +++++++ src/file/footnotes/footnotes-attributes.ts | 43 +++++++++++++++ src/file/footnotes/footnotes.ts | 52 ++++++++++++++++++- src/file/paragraph/formatting/spacing.ts | 2 + 5 files changed, 128 insertions(+), 1 deletion(-) create mode 100644 src/file/footnotes/footnote/footnote-attributes.ts create mode 100644 src/file/footnotes/footnote/footnote.ts create mode 100644 src/file/footnotes/footnotes-attributes.ts diff --git a/src/file/footnotes/footnote/footnote-attributes.ts b/src/file/footnotes/footnote/footnote-attributes.ts new file mode 100644 index 0000000000..b6d96f89d8 --- /dev/null +++ b/src/file/footnotes/footnote/footnote-attributes.ts @@ -0,0 +1,13 @@ +import { XmlAttributeComponent } from "file/xml-components"; + +export interface IFootnoteAttributesProperties { + type?: string; + id: number; +} + +export class FootnoteAttributes extends XmlAttributeComponent { + protected xmlKeys = { + type: "w:type", + id: "w:id", + }; +} diff --git a/src/file/footnotes/footnote/footnote.ts b/src/file/footnotes/footnote/footnote.ts new file mode 100644 index 0000000000..a827737de0 --- /dev/null +++ b/src/file/footnotes/footnote/footnote.ts @@ -0,0 +1,19 @@ +import { XmlComponent } from "file/xml-components"; +import { Paragraph } from "../../paragraph"; +import { FootnoteAttributes } from "./footnote-attributes"; + +export class FootNote extends XmlComponent { + constructor(id: number, type?: string) { + super("w:footnote"); + this.root.push( + new FootnoteAttributes({ + type: type, + id: id, + }), + ); + } + + public addParagraph(paragraph: Paragraph): void { + this.root.push(paragraph); + } +} diff --git a/src/file/footnotes/footnotes-attributes.ts b/src/file/footnotes/footnotes-attributes.ts new file mode 100644 index 0000000000..f09216c9ac --- /dev/null +++ b/src/file/footnotes/footnotes-attributes.ts @@ -0,0 +1,43 @@ +import { XmlAttributeComponent } from "file/xml-components"; + +export interface IFootnotesAttributesProperties { + wpc?: string; + mc?: string; + o?: string; + r?: string; + m?: string; + v?: string; + wp14?: string; + wp?: string; + w10?: string; + w?: string; + w14?: string; + w15?: string; + wpg?: string; + wpi?: string; + wne?: string; + wps?: string; + Ignorable?: string; +} + +export class FootnotesAttributes extends XmlAttributeComponent { + protected xmlKeys = { + wpc: "xmlns:wpc", + mc: "xmlns:mc", + o: "xmlns:o", + r: "xmlns:r", + m: "xmlns:m", + v: "xmlns:v", + wp14: "xmlns:wp14", + wp: "xmlns:wp", + w10: "xmlns:w10", + w: "xmlns:w", + w14: "xmlns:w14", + w15: "xmlns:w15", + wpg: "xmlns:wpg", + wpi: "xmlns:wpi", + wne: "xmlns:wne", + wps: "xmlns:wps", + Ignorable: "mc:Ignorable", + }; +} diff --git a/src/file/footnotes/footnotes.ts b/src/file/footnotes/footnotes.ts index c33cf714c7..d46526d2ab 100644 --- a/src/file/footnotes/footnotes.ts +++ b/src/file/footnotes/footnotes.ts @@ -1,4 +1,54 @@ -export class FootNotes { +import { XmlComponent } from "file/xml-components"; +import { FootNote } from "./footnote/footnote"; +import { FootnotesAttributes } from "./footnotes-attributes"; +import { Paragraph } from "../paragraph"; + +export class FootNotes extends XmlComponent { + constructor() { + super("w:footnotes"); + this.root.push( + new FootnotesAttributes({ + wpc: "http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas", + mc: "http://schemas.openxmlformats.org/markup-compatibility/2006", + o: "urn:schemas-microsoft-com:office:office", + r: "http://schemas.openxmlformats.org/officeDocument/2006/relationships", + m: "http://schemas.openxmlformats.org/officeDocument/2006/math", + v: "urn:schemas-microsoft-com:vml", + wp14: "http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing", + wp: "http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing", + w10: "urn:schemas-microsoft-com:office:word", + w: "http://schemas.openxmlformats.org/wordprocessingml/2006/main", + w14: "http://schemas.microsoft.com/office/word/2010/wordml", + w15: "http://schemas.microsoft.com/office/word/2012/wordml", + wpg: "http://schemas.microsoft.com/office/word/2010/wordprocessingGroup", + wpi: "http://schemas.microsoft.com/office/word/2010/wordprocessingInk", + wne: "http://schemas.microsoft.com/office/word/2006/wordml", + wps: "http://schemas.microsoft.com/office/word/2010/wordprocessingShape", + Ignorable: "w14 w15 wp14", + }), + ); + + const begin = new FootNote(-1); + begin.addParagraph( + new Paragraph().spacing({ + after: 0, + line: 240, + lineRule: "auto", + }), + ); + this.root.push(begin); + + const spacing = new FootNote(0); + spacing.addParagraph( + new Paragraph().spacing({ + after: 0, + line: 240, + lineRule: "auto", + }), + ); + this.root.push(spacing); + } + public createFootNote(): void { // TODO } diff --git a/src/file/paragraph/formatting/spacing.ts b/src/file/paragraph/formatting/spacing.ts index fceab8af8c..292864bf53 100644 --- a/src/file/paragraph/formatting/spacing.ts +++ b/src/file/paragraph/formatting/spacing.ts @@ -5,6 +5,7 @@ export interface ISpacingProperties { after?: number; before?: number; line?: number; + lineRule?: string; } class SpacingAttributes extends XmlAttributeComponent { @@ -12,6 +13,7 @@ class SpacingAttributes extends XmlAttributeComponent { after: "w:after", before: "w:before", line: "w:line", + lineRule: "w:lineRule", }; }