Merge branch 'master' into feat/deprecate-shelljs
# Conflicts: # src/file/numbering/numbering.ts
This commit is contained in:
@ -1,22 +1,10 @@
|
||||
import { expect } from "chai";
|
||||
import { SinonStub, stub } from "sinon";
|
||||
|
||||
import { Formatter } from "@export/formatter";
|
||||
import * as convenienceFunctions from "@util/convenience-functions";
|
||||
|
||||
import { Numbering } from "./numbering";
|
||||
|
||||
describe("Numbering", () => {
|
||||
before(() => {
|
||||
stub(convenienceFunctions, "abstractNumUniqueNumericId").callsFake(() => 0);
|
||||
stub(convenienceFunctions, "concreteNumUniqueNumericId").callsFake(() => 0);
|
||||
});
|
||||
|
||||
after(() => {
|
||||
(convenienceFunctions.abstractNumUniqueNumericId as SinonStub).restore();
|
||||
(convenienceFunctions.concreteNumUniqueNumericId as SinonStub).restore();
|
||||
});
|
||||
|
||||
describe("#constructor", () => {
|
||||
it("creates a default numbering with one abstract and one concrete instance", () => {
|
||||
const numbering = new Numbering({
|
||||
@ -29,7 +17,7 @@ describe("Numbering", () => {
|
||||
const abstractNums: readonly any[] = tree["w:numbering"].filter((el: any) => el["w:abstractNum"]);
|
||||
expect(abstractNums).to.have.lengthOf(1);
|
||||
expect(abstractNums[0]["w:abstractNum"]).to.deep.include.members([
|
||||
{ _attr: { "w:abstractNumId": 0, "w15:restartNumberingAfterBreak": 0 } },
|
||||
{ _attr: { "w:abstractNumId": 1, "w15:restartNumberingAfterBreak": 0 } },
|
||||
{ "w:multiLevelType": { _attr: { "w:val": "hybridMultilevel" } } },
|
||||
]);
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
// https://stackoverflow.com/questions/58622437/purpose-of-abstractnum-and-numberinginstance
|
||||
import { AlignmentType } from "@file/paragraph";
|
||||
import { IContext, IXmlableObject, XmlComponent } from "@file/xml-components";
|
||||
import { abstractNumUniqueNumericId, concreteNumUniqueNumericId, convertInchesToTwip } from "@util/convenience-functions";
|
||||
import { abstractNumUniqueNumericIdGen, concreteNumUniqueNumericIdGen, convertInchesToTwip } from "@util/convenience-functions";
|
||||
|
||||
import { DocumentAttributes } from "../document/document-attributes";
|
||||
import { AbstractNumbering } from "./abstract-numbering";
|
||||
@ -31,6 +31,8 @@ export class Numbering extends XmlComponent {
|
||||
private readonly concreteNumberingMap = new Map<string, ConcreteNumbering>();
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
private readonly referenceConfigMap = new Map<string, Record<string, any>>();
|
||||
private readonly abstractNumUniqueNumericId = abstractNumUniqueNumericIdGen();
|
||||
private readonly concreteNumUniqueNumericId = concreteNumUniqueNumericIdGen();
|
||||
|
||||
public constructor(options: INumberingOptions) {
|
||||
super("w:numbering");
|
||||
@ -56,7 +58,7 @@ export class Numbering extends XmlComponent {
|
||||
}),
|
||||
);
|
||||
|
||||
const abstractNumbering = new AbstractNumbering(abstractNumUniqueNumericId(), [
|
||||
const abstractNumbering = new AbstractNumbering(this.abstractNumUniqueNumericId(), [
|
||||
{
|
||||
level: 0,
|
||||
format: LevelFormat.BULLET,
|
||||
@ -177,7 +179,7 @@ export class Numbering extends XmlComponent {
|
||||
this.abstractNumberingMap.set("default-bullet-numbering", abstractNumbering);
|
||||
|
||||
for (const con of options.config) {
|
||||
this.abstractNumberingMap.set(con.reference, new AbstractNumbering(abstractNumUniqueNumericId(), con.levels));
|
||||
this.abstractNumberingMap.set(con.reference, new AbstractNumbering(this.abstractNumUniqueNumericId(), con.levels));
|
||||
this.referenceConfigMap.set(con.reference, con.levels);
|
||||
}
|
||||
}
|
||||
@ -210,7 +212,7 @@ export class Numbering extends XmlComponent {
|
||||
const firstLevelStartNumber = referenceConfigLevels && referenceConfigLevels[0].start;
|
||||
|
||||
const concreteNumberingSettings = {
|
||||
numId: concreteNumUniqueNumericId(),
|
||||
numId: this.concreteNumUniqueNumericId(),
|
||||
abstractNumId: abstractNumbering.id,
|
||||
reference,
|
||||
instance,
|
||||
|
Reference in New Issue
Block a user