Merge pull request #247 from dolanmiu/feat/number-of-pages
Add Total Number of pages element
This commit is contained in:
23
src/file/paragraph/run/page-number.spec.ts
Normal file
23
src/file/paragraph/run/page-number.spec.ts
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
import { expect } from "chai";
|
||||||
|
|
||||||
|
import { Formatter } from "export/formatter";
|
||||||
|
|
||||||
|
import { NumberOfPages, Page } from "./page-number";
|
||||||
|
|
||||||
|
describe("Page", () => {
|
||||||
|
describe("#constructor()", () => {
|
||||||
|
it("uses the font name for both ascii and hAnsi", () => {
|
||||||
|
const tree = new Formatter().format(new Page());
|
||||||
|
expect(tree).to.deep.equal({ "w:instrText": [{ _attr: { "xml:space": "preserve" } }, "PAGE"] });
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("NumberOfPages", () => {
|
||||||
|
describe("#constructor()", () => {
|
||||||
|
it("uses the font name for both ascii and hAnsi", () => {
|
||||||
|
const tree = new Formatter().format(new NumberOfPages());
|
||||||
|
expect(tree).to.deep.equal({ "w:instrText": [{ _attr: { "xml:space": "preserve" } }, "NUMPAGES"] });
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
@ -12,3 +12,11 @@ export class Page extends XmlComponent {
|
|||||||
this.root.push("PAGE");
|
this.root.push("PAGE");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export class NumberOfPages extends XmlComponent {
|
||||||
|
constructor() {
|
||||||
|
super("w:instrText");
|
||||||
|
this.root.push(new TextAttributes({ space: SpaceType.PRESERVE }));
|
||||||
|
this.root.push("NUMPAGES");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -156,6 +156,38 @@ describe("Run", () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe("#numberOfTotalPages", () => {
|
||||||
|
it("should set the run to the RTL mode", () => {
|
||||||
|
run.numberOfTotalPages();
|
||||||
|
const tree = new Formatter().format(run);
|
||||||
|
expect(tree).to.deep.equal({
|
||||||
|
"w:r": [
|
||||||
|
{ "w:rPr": [] },
|
||||||
|
{ "w:fldChar": [{ _attr: { "w:fldCharType": "begin" } }] },
|
||||||
|
{ "w:instrText": [{ _attr: { "xml:space": "preserve" } }, "NUMPAGES"] },
|
||||||
|
{ "w:fldChar": [{ _attr: { "w:fldCharType": "separate" } }] },
|
||||||
|
{ "w:fldChar": [{ _attr: { "w:fldCharType": "end" } }] },
|
||||||
|
],
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("#pageNumber", () => {
|
||||||
|
it("should set the run to the RTL mode", () => {
|
||||||
|
run.pageNumber();
|
||||||
|
const tree = new Formatter().format(run);
|
||||||
|
expect(tree).to.deep.equal({
|
||||||
|
"w:r": [
|
||||||
|
{ "w:rPr": [] },
|
||||||
|
{ "w:fldChar": [{ _attr: { "w:fldCharType": "begin" } }] },
|
||||||
|
{ "w:instrText": [{ _attr: { "xml:space": "preserve" } }, "PAGE"] },
|
||||||
|
{ "w:fldChar": [{ _attr: { "w:fldCharType": "separate" } }] },
|
||||||
|
{ "w:fldChar": [{ _attr: { "w:fldCharType": "end" } }] },
|
||||||
|
],
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
describe("#style", () => {
|
describe("#style", () => {
|
||||||
it("should set the style to the given styleId", () => {
|
it("should set the style to the given styleId", () => {
|
||||||
run.style("myRunStyle");
|
run.style("myRunStyle");
|
||||||
|
@ -14,7 +14,7 @@ import {
|
|||||||
SizeComplexScript,
|
SizeComplexScript,
|
||||||
Strike,
|
Strike,
|
||||||
} from "./formatting";
|
} from "./formatting";
|
||||||
import { Page } from "./page-number";
|
import { NumberOfPages, Page } from "./page-number";
|
||||||
import { RunProperties } from "./properties";
|
import { RunProperties } from "./properties";
|
||||||
import { RunFonts } from "./run-fonts";
|
import { RunFonts } from "./run-fonts";
|
||||||
import { SubScript, SuperScript } from "./script";
|
import { SubScript, SuperScript } from "./script";
|
||||||
@ -84,6 +84,14 @@ export class Run extends XmlComponent {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public numberOfTotalPages(): Run {
|
||||||
|
this.root.push(new Begin());
|
||||||
|
this.root.push(new NumberOfPages());
|
||||||
|
this.root.push(new Separate());
|
||||||
|
this.root.push(new End());
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
public smallCaps(): Run {
|
public smallCaps(): Run {
|
||||||
this.properties.push(new SmallCaps());
|
this.properties.push(new SmallCaps());
|
||||||
return this;
|
return this;
|
||||||
|
Reference in New Issue
Block a user