remark-docx 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -1
- package/lib/index.js +48 -48
- package/lib/index.js.map +1 -1
- package/lib/index.mjs +48 -48
- package/lib/index.mjs.map +1 -1
- package/lib/transformer.d.ts +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -37,7 +37,7 @@ If you have some feature requests or improvements, please create a [issue](https
|
|
|
37
37
|
- [ ] imageReference
|
|
38
38
|
- [ ] footnote
|
|
39
39
|
- [ ] footnoteReference
|
|
40
|
-
- [x]
|
|
40
|
+
- [x] LaTeX support with math and inlineMath ([remark-math](https://www.npmjs.com/package/remark-math) is required)
|
|
41
41
|
|
|
42
42
|
## Demo
|
|
43
43
|
|
|
@@ -104,3 +104,8 @@ const text = "# hello world";
|
|
|
104
104
|
| revision | undefined | number? | |
|
|
105
105
|
| styles | undefined | IStylesOptions? | |
|
|
106
106
|
| background | undefined | IDocumentBackgroundOptions? | |
|
|
107
|
+
|
|
108
|
+
## Related projects
|
|
109
|
+
|
|
110
|
+
- [remark-slate-transformer](https://github.com/inokawa/remark-slate-transformer)
|
|
111
|
+
- [remark-pdf](https://github.com/inokawa/remark-pdf)
|
package/lib/index.js
CHANGED
|
@@ -33,10 +33,10 @@ function invariant(cond, message) {
|
|
|
33
33
|
throw new Error(message);
|
|
34
34
|
}
|
|
35
35
|
|
|
36
|
-
const
|
|
36
|
+
const hasSquareBrackets = (arg) => {
|
|
37
37
|
return !!arg && arg.openMark === "[" && arg.closeMark === "]";
|
|
38
38
|
};
|
|
39
|
-
const
|
|
39
|
+
const hasCurlyBrackets = (arg) => {
|
|
40
40
|
return !!arg && arg.openMark === "{" && arg.closeMark === "}";
|
|
41
41
|
};
|
|
42
42
|
const mapString = (s) => new docx__namespace.MathRun(s);
|
|
@@ -282,8 +282,8 @@ const mapMacro = (n, runs) => {
|
|
|
282
282
|
case "dfrac": {
|
|
283
283
|
const args = (_g = n.args) !== null && _g !== void 0 ? _g : [];
|
|
284
284
|
if (args.length === 2 &&
|
|
285
|
-
|
|
286
|
-
|
|
285
|
+
hasCurlyBrackets(args[0]) &&
|
|
286
|
+
hasCurlyBrackets(args[1])) {
|
|
287
287
|
return new docx__namespace.MathFraction({
|
|
288
288
|
numerator: mapGroup(args[0].content),
|
|
289
289
|
denominator: mapGroup(args[1].content),
|
|
@@ -293,14 +293,14 @@ const mapMacro = (n, runs) => {
|
|
|
293
293
|
}
|
|
294
294
|
case "sqrt": {
|
|
295
295
|
const args = (_h = n.args) !== null && _h !== void 0 ? _h : [];
|
|
296
|
-
if (args.length === 1 &&
|
|
296
|
+
if (args.length === 1 && hasCurlyBrackets(args[0])) {
|
|
297
297
|
return new docx__namespace.MathRadical({
|
|
298
298
|
children: mapGroup(args[0].content),
|
|
299
299
|
});
|
|
300
300
|
}
|
|
301
301
|
if (args.length === 2 &&
|
|
302
|
-
|
|
303
|
-
|
|
302
|
+
hasSquareBrackets(args[0]) &&
|
|
303
|
+
hasCurlyBrackets(args[1])) {
|
|
304
304
|
return new docx__namespace.MathRadical({
|
|
305
305
|
children: mapGroup(args[1].content),
|
|
306
306
|
degree: mapGroup(args[0].content),
|
|
@@ -439,7 +439,7 @@ const DEFAULT_NUMBERINGS = [
|
|
|
439
439
|
},
|
|
440
440
|
},
|
|
441
441
|
];
|
|
442
|
-
|
|
442
|
+
const mdastToDocx = (node, { output = "buffer", title, subject, creator, keywords, description, lastModifiedBy, revision, styles, background, }, images) => {
|
|
443
443
|
const nodes = convertNodes(node.children, {
|
|
444
444
|
deco: {},
|
|
445
445
|
images,
|
|
@@ -464,14 +464,14 @@ function mdastToDocx(node, { output, title, subject, creator, keywords, descript
|
|
|
464
464
|
],
|
|
465
465
|
},
|
|
466
466
|
});
|
|
467
|
-
switch (output
|
|
467
|
+
switch (output) {
|
|
468
468
|
case "buffer":
|
|
469
469
|
return docx.Packer.toBuffer(doc);
|
|
470
470
|
case "blob":
|
|
471
471
|
return docx.Packer.toBlob(doc);
|
|
472
472
|
}
|
|
473
|
-
}
|
|
474
|
-
|
|
473
|
+
};
|
|
474
|
+
const convertNodes = (nodes, ctx) => {
|
|
475
475
|
const results = [];
|
|
476
476
|
for (const node of nodes) {
|
|
477
477
|
switch (node.type) {
|
|
@@ -564,8 +564,8 @@ function convertNodes(nodes, ctx) {
|
|
|
564
564
|
}
|
|
565
565
|
}
|
|
566
566
|
return results;
|
|
567
|
-
}
|
|
568
|
-
|
|
567
|
+
};
|
|
568
|
+
const buildParagraph = ({ children }, ctx) => {
|
|
569
569
|
const list = ctx.list;
|
|
570
570
|
return new docx__namespace.Paragraph(Object.assign({ children: convertNodes(children, ctx) }, (list &&
|
|
571
571
|
(list.ordered
|
|
@@ -580,8 +580,8 @@ function buildParagraph({ children }, ctx) {
|
|
|
580
580
|
level: list.level,
|
|
581
581
|
},
|
|
582
582
|
}))));
|
|
583
|
-
}
|
|
584
|
-
|
|
583
|
+
};
|
|
584
|
+
const buildHeading = ({ children, depth }, ctx) => {
|
|
585
585
|
let heading;
|
|
586
586
|
switch (depth) {
|
|
587
587
|
case 1:
|
|
@@ -607,17 +607,17 @@ function buildHeading({ children, depth }, ctx) {
|
|
|
607
607
|
heading,
|
|
608
608
|
children: convertNodes(children, ctx),
|
|
609
609
|
});
|
|
610
|
-
}
|
|
611
|
-
|
|
610
|
+
};
|
|
611
|
+
const buildThematicBreak = (_) => {
|
|
612
612
|
return new docx__namespace.Paragraph({
|
|
613
613
|
thematicBreak: true,
|
|
614
614
|
});
|
|
615
|
-
}
|
|
616
|
-
|
|
615
|
+
};
|
|
616
|
+
const buildBlockquote = ({ children }, ctx) => {
|
|
617
617
|
// FIXME: do nothing for now
|
|
618
618
|
return convertNodes(children, ctx);
|
|
619
|
-
}
|
|
620
|
-
|
|
619
|
+
};
|
|
620
|
+
const buildList = ({ children, ordered, start: _start, spread: _spread }, ctx) => {
|
|
621
621
|
const list = {
|
|
622
622
|
level: ctx.list ? ctx.list.level + 1 : 0,
|
|
623
623
|
ordered: !!ordered,
|
|
@@ -626,11 +626,11 @@ function buildList({ children, ordered, start: _start, spread: _spread }, ctx) {
|
|
|
626
626
|
acc.push(...buildListItem(item, Object.assign(Object.assign({}, ctx), { list })));
|
|
627
627
|
return acc;
|
|
628
628
|
}, []);
|
|
629
|
-
}
|
|
630
|
-
|
|
629
|
+
};
|
|
630
|
+
const buildListItem = ({ children, checked: _checked, spread: _spread }, ctx) => {
|
|
631
631
|
return convertNodes(children, ctx);
|
|
632
|
-
}
|
|
633
|
-
|
|
632
|
+
};
|
|
633
|
+
const buildTable = ({ children, align }, ctx) => {
|
|
634
634
|
const cellAligns = align === null || align === void 0 ? void 0 : align.map((a) => {
|
|
635
635
|
switch (a) {
|
|
636
636
|
case "left":
|
|
@@ -648,15 +648,15 @@ function buildTable({ children, align }, ctx) {
|
|
|
648
648
|
return buildTableRow(r, ctx, cellAligns);
|
|
649
649
|
}),
|
|
650
650
|
});
|
|
651
|
-
}
|
|
652
|
-
|
|
651
|
+
};
|
|
652
|
+
const buildTableRow = ({ children }, ctx, cellAligns) => {
|
|
653
653
|
return new docx__namespace.TableRow({
|
|
654
654
|
children: children.map((c, i) => {
|
|
655
655
|
return buildTableCell(c, ctx, cellAligns === null || cellAligns === void 0 ? void 0 : cellAligns[i]);
|
|
656
656
|
}),
|
|
657
657
|
});
|
|
658
|
-
}
|
|
659
|
-
|
|
658
|
+
};
|
|
659
|
+
const buildTableCell = ({ children }, ctx, align) => {
|
|
660
660
|
return new docx__namespace.TableCell({
|
|
661
661
|
children: [
|
|
662
662
|
new docx__namespace.Paragraph({
|
|
@@ -665,20 +665,20 @@ function buildTableCell({ children }, ctx, align) {
|
|
|
665
665
|
}),
|
|
666
666
|
],
|
|
667
667
|
});
|
|
668
|
-
}
|
|
669
|
-
|
|
668
|
+
};
|
|
669
|
+
const buildHtml = ({ value }) => {
|
|
670
670
|
// FIXME: transform to text for now
|
|
671
671
|
return new docx__namespace.Paragraph({
|
|
672
672
|
children: [buildText(value, {})],
|
|
673
673
|
});
|
|
674
|
-
}
|
|
675
|
-
|
|
674
|
+
};
|
|
675
|
+
const buildCode = ({ value, lang: _lang, meta: _meta }) => {
|
|
676
676
|
// FIXME: transform to text for now
|
|
677
677
|
return new docx__namespace.Paragraph({
|
|
678
678
|
children: [buildText(value, {})],
|
|
679
679
|
});
|
|
680
|
-
}
|
|
681
|
-
|
|
680
|
+
};
|
|
681
|
+
const buildMath = ({ value }) => {
|
|
682
682
|
return parseLatex(value).map((runs) => new docx__namespace.Paragraph({
|
|
683
683
|
children: [
|
|
684
684
|
new docx__namespace.Math({
|
|
@@ -686,30 +686,30 @@ function buildMath({ value }) {
|
|
|
686
686
|
}),
|
|
687
687
|
],
|
|
688
688
|
}));
|
|
689
|
-
}
|
|
690
|
-
|
|
689
|
+
};
|
|
690
|
+
const buildInlineMath = ({ value }) => {
|
|
691
691
|
return new docx__namespace.Math({
|
|
692
692
|
children: parseLatex(value).flatMap((runs) => runs),
|
|
693
693
|
});
|
|
694
|
-
}
|
|
695
|
-
|
|
694
|
+
};
|
|
695
|
+
const buildText = (text, deco) => {
|
|
696
696
|
return new docx__namespace.TextRun({
|
|
697
697
|
text,
|
|
698
698
|
bold: deco.strong,
|
|
699
699
|
italics: deco.emphasis,
|
|
700
700
|
strike: deco.delete,
|
|
701
701
|
});
|
|
702
|
-
}
|
|
703
|
-
|
|
702
|
+
};
|
|
703
|
+
const buildBreak = (_) => {
|
|
704
704
|
return new docx__namespace.TextRun({ text: "", break: 1 });
|
|
705
|
-
}
|
|
706
|
-
|
|
705
|
+
};
|
|
706
|
+
const buildLink = ({ children, url, title: _title }, ctx) => {
|
|
707
707
|
return new docx__namespace.ExternalHyperlink({
|
|
708
708
|
link: url,
|
|
709
709
|
children: convertNodes(children, ctx),
|
|
710
710
|
});
|
|
711
|
-
}
|
|
712
|
-
|
|
711
|
+
};
|
|
712
|
+
const buildImage = ({ url, title: _title, alt: _alt }, images) => {
|
|
713
713
|
const img = images[url];
|
|
714
714
|
invariant(img, `Fetch image was failed: ${url}`);
|
|
715
715
|
const { image, width, height } = img;
|
|
@@ -720,13 +720,13 @@ function buildImage({ url, title: _title, alt: _alt }, images) {
|
|
|
720
720
|
height,
|
|
721
721
|
},
|
|
722
722
|
});
|
|
723
|
-
}
|
|
724
|
-
|
|
723
|
+
};
|
|
724
|
+
const buildFootnote = ({ children }, ctx) => {
|
|
725
725
|
// FIXME: transform to paragraph for now
|
|
726
726
|
return new docx__namespace.Paragraph({
|
|
727
727
|
children: convertNodes(children, ctx),
|
|
728
728
|
});
|
|
729
|
-
}
|
|
729
|
+
};
|
|
730
730
|
|
|
731
731
|
const plugin = function (opts = {}) {
|
|
732
732
|
let images = {};
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/src/utils.ts","../src/src/latex.ts","../src/src/transformer.ts","../src/src/plugin.ts"],"sourcesContent":["export const unreachable = (_: never): never => {\n throw new Error(\"unreachable\");\n};\n\nexport function invariant(cond: any, message: string): asserts cond {\n if (!cond) throw new Error(message);\n}\n","import * as docx from \"docx\";\nimport { parseMath } from \"@unified-latex/unified-latex-util-parse\";\nimport type * as Latex from \"@unified-latex/unified-latex-types\";\nimport { unreachable } from \"./utils\";\n\nconst hasSquareBracket = (\n arg: Latex.Argument | undefined\n): arg is Latex.Argument => {\n return !!arg && arg.openMark === \"[\" && arg.closeMark === \"]\";\n};\nconst hasCurlyBracket = (\n arg: Latex.Argument | undefined\n): arg is Latex.Argument => {\n return !!arg && arg.openMark === \"{\" && arg.closeMark === \"}\";\n};\n\nconst mapString = (s: string): docx.MathRun => new docx.MathRun(s);\n\nconst mapMacro = (\n n: Latex.Macro,\n runs: docx.MathRun[]\n): docx.MathRun | false => {\n switch (n.content) {\n case \"#\":\n return mapString(\"#\");\n case \"$\":\n return mapString(\"$\");\n case \"%\":\n return mapString(\"%\");\n case \"&\":\n return mapString(\"&\");\n case \"textasciitilde\":\n return mapString(\"~\");\n case \"textasciicircum\":\n return mapString(\"^\");\n case \"textbackslash\":\n return mapString(\"∖\");\n case \"{\":\n return mapString(\"{\");\n case \"}\":\n return mapString(\"}\");\n case \"textbar\":\n return mapString(\"|\");\n case \"textless\":\n return mapString(\"<\");\n case \"textgreater\":\n return mapString(\">\");\n case \"neq\":\n return mapString(\"≠\");\n case \"sim\":\n return mapString(\"∼\");\n case \"simeq\":\n return mapString(\"≃\");\n case \"approx\":\n return mapString(\"≈\");\n case \"fallingdotseq\":\n return mapString(\"≒\");\n case \"risingdotseq\":\n return mapString(\"≓\");\n case \"equiv\":\n return mapString(\"≡\");\n case \"geq\":\n return mapString(\"≥\");\n case \"geqq\":\n return mapString(\"≧\");\n case \"leq\":\n return mapString(\"≤\");\n case \"leqq\":\n return mapString(\"≦\");\n case \"gg\":\n return mapString(\"≫\");\n case \"ll\":\n return mapString(\"≪\");\n case \"times\":\n return mapString(\"×\");\n case \"div\":\n return mapString(\"÷\");\n case \"pm\":\n return mapString(\"±\");\n case \"mp\":\n return mapString(\"∓\");\n case \"oplus\":\n return mapString(\"⊕\");\n case \"ominus\":\n return mapString(\"⊖\");\n case \"otimes\":\n return mapString(\"⊗\");\n case \"oslash\":\n return mapString(\"⊘\");\n case \"circ\":\n return mapString(\"∘\");\n case \"cdot\":\n return mapString(\"⋅\");\n case \"bullet\":\n return mapString(\"∙\");\n case \"ltimes\":\n return mapString(\"⋉\");\n case \"rtimes\":\n return mapString(\"⋊\");\n case \"in\":\n return mapString(\"∈\");\n case \"ni\":\n return mapString(\"∋\");\n case \"notin\":\n return mapString(\"∉\");\n case \"subset\":\n return mapString(\"⊂\");\n case \"supset\":\n return mapString(\"⊃\");\n case \"subseteq\":\n return mapString(\"⊆\");\n case \"supseteq\":\n return mapString(\"⊇\");\n case \"nsubseteq\":\n return mapString(\"⊈\");\n case \"nsupseteq\":\n return mapString(\"⊉\");\n case \"subsetneq\":\n return mapString(\"⊊\");\n case \"supsetneq\":\n return mapString(\"⊋\");\n case \"cap\":\n return mapString(\"∩\");\n case \"cup\":\n return mapString(\"∪\");\n case \"emptyset\":\n return mapString(\"∅\");\n case \"infty\":\n return mapString(\"∞\");\n case \"partial\":\n return mapString(\"∂\");\n case \"aleph\":\n return mapString(\"ℵ\");\n case \"hbar\":\n return mapString(\"ℏ\");\n case \"wp\":\n return mapString(\"℘\");\n case \"Re\":\n return mapString(\"ℜ\");\n case \"Im\":\n return mapString(\"ℑ\");\n case \"alpha\":\n return mapString(\"α\");\n case \"beta\":\n return mapString(\"β\");\n case \"gamma\":\n return mapString(\"γ\");\n case \"delta\":\n return mapString(\"δ\");\n case \"epsilon\":\n return mapString(\"ϵ\");\n case \"zeta\":\n return mapString(\"ζ\");\n case \"eta\":\n return mapString(\"η\");\n case \"theta\":\n return mapString(\"θ\");\n case \"iota\":\n return mapString(\"ι\");\n case \"kappa\":\n return mapString(\"κ\");\n case \"lambda\":\n return mapString(\"λ\");\n case \"eta\":\n return mapString(\"η\");\n case \"mu\":\n return mapString(\"μ\");\n case \"nu\":\n return mapString(\"ν\");\n case \"xi\":\n return mapString(\"ξ\");\n case \"pi\":\n return mapString(\"π\");\n case \"rho\":\n return mapString(\"ρ\");\n case \"sigma\":\n return mapString(\"σ\");\n case \"tau\":\n return mapString(\"τ\");\n case \"upsilon\":\n return mapString(\"υ\");\n case \"phi\":\n return mapString(\"ϕ\");\n case \"chi\":\n return mapString(\"χ\");\n case \"psi\":\n return mapString(\"ψ\");\n case \"omega\":\n return mapString(\"ω\");\n case \"varepsilon\":\n return mapString(\"ε\");\n case \"vartheta\":\n return mapString(\"ϑ\");\n case \"varrho\":\n return mapString(\"ϱ\");\n case \"varsigma\":\n return mapString(\"ς\");\n case \"varphi\":\n return mapString(\"φ\");\n case \"Gamma\":\n return mapString(\"Γ\");\n case \"Delta\":\n return mapString(\"Δ\");\n case \"Theta\":\n return mapString(\"Θ\");\n case \"Lambda\":\n return mapString(\"Λ\");\n case \"Xi\":\n return mapString(\"Ξ\");\n case \"Pi\":\n return mapString(\"Π\");\n case \"Sigma\":\n return mapString(\"Σ\");\n case \"Upsilon\":\n return mapString(\"Υ\");\n case \"Phi\":\n return mapString(\"Φ\");\n case \"Psi\":\n return mapString(\"Ψ\");\n case \"Omega\":\n return mapString(\"Ω\");\n case \"newline\":\n case \"\\\\\":\n // line break\n return false;\n case \"^\": {\n const prev = runs.pop();\n if (!prev) break;\n return new docx.MathSuperScript({\n children: [prev],\n superScript: mapGroup(n.args?.[0]?.content ?? []),\n });\n }\n case \"_\": {\n const prev = runs.pop();\n if (!prev) break;\n return new docx.MathSubScript({\n children: [prev],\n subScript: mapGroup(n.args?.[0]?.content ?? []),\n });\n }\n case \"hat\":\n // TODO: implement\n break;\n case \"widehat\":\n // TODO: implement\n break;\n case \"sum\": {\n // TODO: support superscript and subscript\n return new docx.MathSum({\n children: [],\n });\n }\n case \"int\":\n return mapString(\"∫\");\n case \"frac\":\n case \"tfrac\":\n case \"dfrac\": {\n const args = n.args ?? [];\n if (\n args.length === 2 &&\n hasCurlyBracket(args[0]) &&\n hasCurlyBracket(args[1])\n ) {\n return new docx.MathFraction({\n numerator: mapGroup(args[0].content),\n denominator: mapGroup(args[1].content),\n });\n }\n break;\n }\n case \"sqrt\": {\n const args = n.args ?? [];\n if (args.length === 1 && hasCurlyBracket(args[0])) {\n return new docx.MathRadical({\n children: mapGroup(args[0].content),\n });\n }\n if (\n args.length === 2 &&\n hasSquareBracket(args[0]) &&\n hasCurlyBracket(args[1])\n ) {\n return new docx.MathRadical({\n children: mapGroup(args[1].content),\n degree: mapGroup(args[0].content),\n });\n }\n break;\n }\n default:\n break;\n }\n return mapString(n.content);\n};\n\nconst mapGroup = (nodes: Latex.Node[]): docx.MathRun[] => {\n const group: docx.MathRun[] = [];\n for (const c of nodes) {\n group.push(...(mapNode(c, group) || []));\n }\n return group;\n};\n\nconst mapNode = (\n n: Latex.Node,\n runs: docx.MathRun[]\n): docx.MathRun[] | false => {\n switch (n.type) {\n case \"root\":\n break;\n case \"string\":\n return [mapString(n.content)];\n case \"whitespace\":\n break;\n case \"parbreak\":\n break;\n case \"comment\":\n break;\n case \"macro\":\n const run = mapMacro(n, runs);\n if (!run) {\n // line break\n return false;\n } else {\n return [run];\n }\n case \"environment\":\n case \"mathenv\":\n break;\n case \"verbatim\":\n break;\n case \"inlinemath\":\n break;\n case \"displaymath\":\n break;\n case \"group\":\n return mapGroup(n.content);\n case \"verb\":\n break;\n default:\n unreachable(n);\n }\n\n return [];\n};\n\nexport const parseLatex = (value: string): docx.MathRun[][] => {\n const parsed = parseMath(value);\n const paragraphs: docx.MathRun[][] = [[]];\n let runs: docx.MathRun[] = paragraphs[0]!;\n for (const n of parsed) {\n const res = mapNode(n, runs);\n if (!res) {\n // line break\n paragraphs.push((runs = []));\n } else {\n runs.push(...res);\n }\n }\n return paragraphs;\n};\n","import * as docx from \"docx\";\nimport { convertInchesToTwip, Packer } from \"docx\";\nimport type { IPropertiesOptions } from \"docx/build/file/core-properties\";\nimport type * as mdast from \"./models/mdast\";\nimport { parseLatex } from \"./latex\";\nimport { invariant, unreachable } from \"./utils\";\n\nconst ORDERED_LIST_REF = \"ordered\";\nconst INDENT = 0.5;\nconst DEFAULT_NUMBERINGS: docx.ILevelsOptions[] = [\n {\n level: 0,\n format: docx.LevelFormat.DECIMAL,\n text: \"%1.\",\n alignment: docx.AlignmentType.START,\n },\n {\n level: 1,\n format: docx.LevelFormat.DECIMAL,\n text: \"%2.\",\n alignment: docx.AlignmentType.START,\n style: {\n paragraph: {\n indent: { start: convertInchesToTwip(INDENT * 1) },\n },\n },\n },\n {\n level: 2,\n format: docx.LevelFormat.DECIMAL,\n text: \"%3.\",\n alignment: docx.AlignmentType.START,\n style: {\n paragraph: {\n indent: { start: convertInchesToTwip(INDENT * 2) },\n },\n },\n },\n {\n level: 3,\n format: docx.LevelFormat.DECIMAL,\n text: \"%4.\",\n alignment: docx.AlignmentType.START,\n style: {\n paragraph: {\n indent: { start: convertInchesToTwip(INDENT * 3) },\n },\n },\n },\n {\n level: 4,\n format: docx.LevelFormat.DECIMAL,\n text: \"%5.\",\n alignment: docx.AlignmentType.START,\n style: {\n paragraph: {\n indent: { start: convertInchesToTwip(INDENT * 4) },\n },\n },\n },\n {\n level: 5,\n format: docx.LevelFormat.DECIMAL,\n text: \"%6.\",\n alignment: docx.AlignmentType.START,\n style: {\n paragraph: {\n indent: { start: convertInchesToTwip(INDENT * 5) },\n },\n },\n },\n];\n\nexport type ImageDataMap = { [url: string]: ImageData };\n\nexport type ImageData = {\n image: docx.IImageOptions[\"data\"];\n width: number;\n height: number;\n};\n\nexport type ImageResolver = (url: string) => Promise<ImageData> | ImageData;\n\ntype Decoration = Readonly<\n {\n [key in (mdast.Emphasis | mdast.Strong | mdast.Delete)[\"type\"]]?: true;\n }\n>;\n\ntype ListInfo = Readonly<{\n level: number;\n ordered: boolean;\n}>;\n\ntype Context = Readonly<{\n deco: Decoration;\n images: ImageDataMap;\n list?: ListInfo;\n}>;\n\nexport type Opts = {\n output?: \"buffer\" | \"blob\";\n imageResolver?: ImageResolver;\n} & Pick<\n IPropertiesOptions,\n | \"title\"\n | \"subject\"\n | \"creator\"\n | \"keywords\"\n | \"description\"\n | \"lastModifiedBy\"\n | \"revision\"\n | \"styles\"\n | \"background\"\n>;\n\ntype DocxChild = docx.Paragraph | docx.Table | docx.TableOfContents;\ntype DocxContent = DocxChild | docx.ParagraphChild;\n\nexport function mdastToDocx(\n node: mdast.Root,\n {\n output,\n title,\n subject,\n creator,\n keywords,\n description,\n lastModifiedBy,\n revision,\n styles,\n background,\n }: Opts,\n images: ImageDataMap\n): Promise<any> {\n const nodes = convertNodes(node.children, {\n deco: {},\n images,\n }) as DocxChild[];\n const doc = new docx.Document({\n title,\n subject,\n creator,\n keywords,\n description,\n lastModifiedBy,\n revision,\n styles,\n background,\n sections: [{ children: nodes }],\n numbering: {\n config: [\n {\n reference: ORDERED_LIST_REF,\n levels: DEFAULT_NUMBERINGS,\n },\n ],\n },\n });\n\n switch (output ?? \"buffer\") {\n case \"buffer\":\n return Packer.toBuffer(doc);\n case \"blob\":\n return Packer.toBlob(doc);\n }\n}\n\nfunction convertNodes(nodes: mdast.Content[], ctx: Context): DocxContent[] {\n const results: DocxContent[] = [];\n\n for (const node of nodes) {\n switch (node.type) {\n case \"paragraph\":\n results.push(buildParagraph(node, ctx));\n break;\n case \"heading\":\n results.push(buildHeading(node, ctx));\n break;\n case \"thematicBreak\":\n results.push(buildThematicBreak(node));\n break;\n case \"blockquote\":\n results.push(...buildBlockquote(node, ctx));\n break;\n case \"list\":\n results.push(...buildList(node, ctx));\n break;\n case \"listItem\":\n invariant(false, \"unreachable\");\n case \"table\":\n results.push(buildTable(node, ctx));\n break;\n case \"tableRow\":\n invariant(false, \"unreachable\");\n case \"tableCell\":\n invariant(false, \"unreachable\");\n case \"html\":\n results.push(buildHtml(node));\n break;\n case \"code\":\n results.push(buildCode(node));\n break;\n case \"yaml\":\n // FIXME: unimplemented\n break;\n case \"toml\":\n // FIXME: unimplemented\n break;\n case \"definition\":\n // FIXME: unimplemented\n break;\n case \"footnoteDefinition\":\n // FIXME: unimplemented\n break;\n case \"text\":\n results.push(buildText(node.value, ctx.deco));\n break;\n case \"emphasis\":\n case \"strong\":\n case \"delete\": {\n const { type, children } = node;\n results.push(\n ...convertNodes(children, {\n ...ctx,\n deco: { ...ctx.deco, [type]: true },\n })\n );\n break;\n }\n case \"inlineCode\":\n // FIXME: transform to text for now\n results.push(buildText(node.value, ctx.deco));\n break;\n case \"break\":\n results.push(buildBreak(node));\n break;\n case \"link\":\n results.push(buildLink(node, ctx));\n break;\n case \"image\":\n results.push(buildImage(node, ctx.images));\n break;\n case \"linkReference\":\n // FIXME: unimplemented\n break;\n case \"imageReference\":\n // FIXME: unimplemented\n break;\n case \"footnote\":\n results.push(buildFootnote(node, ctx));\n break;\n case \"footnoteReference\":\n // FIXME: unimplemented\n break;\n case \"math\":\n results.push(...buildMath(node));\n break;\n case \"inlineMath\":\n results.push(buildInlineMath(node));\n break;\n default:\n unreachable(node);\n break;\n }\n }\n return results;\n}\n\nfunction buildParagraph({ children }: mdast.Paragraph, ctx: Context) {\n const list = ctx.list;\n return new docx.Paragraph({\n children: convertNodes(children, ctx),\n ...(list &&\n (list.ordered\n ? {\n numbering: {\n reference: ORDERED_LIST_REF,\n level: list.level,\n },\n }\n : {\n bullet: {\n level: list.level,\n },\n })),\n });\n}\n\nfunction buildHeading({ children, depth }: mdast.Heading, ctx: Context) {\n let heading: docx.HeadingLevel;\n switch (depth) {\n case 1:\n heading = docx.HeadingLevel.TITLE;\n break;\n case 2:\n heading = docx.HeadingLevel.HEADING_1;\n break;\n case 3:\n heading = docx.HeadingLevel.HEADING_2;\n break;\n case 4:\n heading = docx.HeadingLevel.HEADING_3;\n break;\n case 5:\n heading = docx.HeadingLevel.HEADING_4;\n break;\n case 6:\n heading = docx.HeadingLevel.HEADING_5;\n break;\n }\n return new docx.Paragraph({\n heading,\n children: convertNodes(children, ctx),\n });\n}\n\nfunction buildThematicBreak(_: mdast.ThematicBreak) {\n return new docx.Paragraph({\n thematicBreak: true,\n });\n}\n\nfunction buildBlockquote({ children }: mdast.Blockquote, ctx: Context) {\n // FIXME: do nothing for now\n return convertNodes(children, ctx);\n}\n\nfunction buildList(\n { children, ordered, start: _start, spread: _spread }: mdast.List,\n ctx: Context\n) {\n const list: ListInfo = {\n level: ctx.list ? ctx.list.level + 1 : 0,\n ordered: !!ordered,\n };\n return children.reduce((acc, item) => {\n acc.push(\n ...buildListItem(item, {\n ...ctx,\n list,\n })\n );\n return acc;\n }, [] as DocxContent[]);\n}\n\nfunction buildListItem(\n { children, checked: _checked, spread: _spread }: mdast.ListItem,\n ctx: Context\n) {\n return convertNodes(children, ctx);\n}\n\nfunction buildTable({ children, align }: mdast.Table, ctx: Context) {\n const cellAligns: docx.AlignmentType[] | undefined = align?.map((a) => {\n switch (a) {\n case \"left\":\n return docx.AlignmentType.LEFT;\n case \"right\":\n return docx.AlignmentType.RIGHT;\n case \"center\":\n return docx.AlignmentType.CENTER;\n default:\n return docx.AlignmentType.LEFT;\n }\n });\n\n return new docx.Table({\n rows: children.map((r) => {\n return buildTableRow(r, ctx, cellAligns);\n }),\n });\n}\n\nfunction buildTableRow(\n { children }: mdast.TableRow,\n ctx: Context,\n cellAligns: docx.AlignmentType[] | undefined\n) {\n return new docx.TableRow({\n children: children.map((c, i) => {\n return buildTableCell(c, ctx, cellAligns?.[i]);\n }),\n });\n}\n\nfunction buildTableCell(\n { children }: mdast.TableCell,\n ctx: Context,\n align: docx.AlignmentType | undefined\n) {\n return new docx.TableCell({\n children: [\n new docx.Paragraph({\n alignment: align,\n children: convertNodes(children, ctx),\n }),\n ],\n });\n}\n\nfunction buildHtml({ value }: mdast.HTML) {\n // FIXME: transform to text for now\n return new docx.Paragraph({\n children: [buildText(value, {})],\n });\n}\n\nfunction buildCode({ value, lang: _lang, meta: _meta }: mdast.Code) {\n // FIXME: transform to text for now\n return new docx.Paragraph({\n children: [buildText(value, {})],\n });\n}\n\nfunction buildMath({ value }: mdast.Math) {\n return parseLatex(value).map(\n (runs) =>\n new docx.Paragraph({\n children: [\n new docx.Math({\n children: runs,\n }),\n ],\n })\n );\n}\n\nfunction buildInlineMath({ value }: mdast.InlineMath) {\n return new docx.Math({\n children: parseLatex(value).flatMap((runs) => runs),\n });\n}\n\nfunction buildText(text: string, deco: Decoration) {\n return new docx.TextRun({\n text,\n bold: deco.strong,\n italics: deco.emphasis,\n strike: deco.delete,\n });\n}\n\nfunction buildBreak(_: mdast.Break) {\n return new docx.TextRun({ text: \"\", break: 1 });\n}\n\nfunction buildLink({ children, url, title: _title }: mdast.Link, ctx: Context) {\n return new docx.ExternalHyperlink({\n link: url,\n children: convertNodes(children, ctx),\n });\n}\n\nfunction buildImage(\n { url, title: _title, alt: _alt }: mdast.Image,\n images: ImageDataMap\n) {\n const img = images[url];\n invariant(img, `Fetch image was failed: ${url}`);\n\n const { image, width, height } = img;\n return new docx.ImageRun({\n data: image,\n transformation: {\n width,\n height,\n },\n });\n}\n\nfunction buildFootnote({ children }: mdast.Footnote, ctx: Context) {\n // FIXME: transform to paragraph for now\n return new docx.Paragraph({\n children: convertNodes(children, ctx),\n });\n}\n","import type { Plugin } from \"unified\";\nimport type * as mdast from \"mdast\";\nimport { visit } from \"unist-util-visit\";\nimport { mdastToDocx, Opts, ImageDataMap } from \"./transformer\";\nimport { invariant } from \"./utils\";\n\nexport type Options = Opts;\n\nconst plugin: Plugin<[Options?]> = function (opts = {}) {\n let images: ImageDataMap = {};\n\n this.Compiler = (node) => {\n return mdastToDocx(node as any, opts, images);\n };\n\n return async (node) => {\n const imageList: mdast.Image[] = [];\n visit(node, \"image\", (node) => {\n imageList.push(node);\n });\n if (imageList.length === 0) {\n return node;\n }\n\n const imageResolver = opts.imageResolver;\n invariant(imageResolver, \"options.imageResolver is not defined.\");\n\n const imageDatas = await Promise.all(\n imageList.map(({ url }) => imageResolver(url))\n );\n images = imageList.reduce((acc, img, i) => {\n acc[img.url] = imageDatas[i]!;\n return acc;\n }, {} as ImageDataMap);\n return node;\n };\n};\nexport default plugin;\n"],"names":["docx","parseMath","convertInchesToTwip","Packer","__awaiter","visit"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/src/utils.ts","../src/src/latex.ts","../src/src/transformer.ts","../src/src/plugin.ts"],"sourcesContent":["export const unreachable = (_: never): never => {\n throw new Error(\"unreachable\");\n};\n\nexport function invariant(cond: any, message: string): asserts cond {\n if (!cond) throw new Error(message);\n}\n","import * as docx from \"docx\";\nimport { parseMath } from \"@unified-latex/unified-latex-util-parse\";\nimport type * as latex from \"@unified-latex/unified-latex-types\";\nimport { unreachable } from \"./utils\";\n\nconst hasSquareBrackets = (\n arg: latex.Argument | undefined\n): arg is latex.Argument => {\n return !!arg && arg.openMark === \"[\" && arg.closeMark === \"]\";\n};\nconst hasCurlyBrackets = (\n arg: latex.Argument | undefined\n): arg is latex.Argument => {\n return !!arg && arg.openMark === \"{\" && arg.closeMark === \"}\";\n};\n\nconst mapString = (s: string): docx.MathRun => new docx.MathRun(s);\n\nconst mapMacro = (\n n: latex.Macro,\n runs: docx.MathRun[]\n): docx.MathRun | false => {\n switch (n.content) {\n case \"#\":\n return mapString(\"#\");\n case \"$\":\n return mapString(\"$\");\n case \"%\":\n return mapString(\"%\");\n case \"&\":\n return mapString(\"&\");\n case \"textasciitilde\":\n return mapString(\"~\");\n case \"textasciicircum\":\n return mapString(\"^\");\n case \"textbackslash\":\n return mapString(\"∖\");\n case \"{\":\n return mapString(\"{\");\n case \"}\":\n return mapString(\"}\");\n case \"textbar\":\n return mapString(\"|\");\n case \"textless\":\n return mapString(\"<\");\n case \"textgreater\":\n return mapString(\">\");\n case \"neq\":\n return mapString(\"≠\");\n case \"sim\":\n return mapString(\"∼\");\n case \"simeq\":\n return mapString(\"≃\");\n case \"approx\":\n return mapString(\"≈\");\n case \"fallingdotseq\":\n return mapString(\"≒\");\n case \"risingdotseq\":\n return mapString(\"≓\");\n case \"equiv\":\n return mapString(\"≡\");\n case \"geq\":\n return mapString(\"≥\");\n case \"geqq\":\n return mapString(\"≧\");\n case \"leq\":\n return mapString(\"≤\");\n case \"leqq\":\n return mapString(\"≦\");\n case \"gg\":\n return mapString(\"≫\");\n case \"ll\":\n return mapString(\"≪\");\n case \"times\":\n return mapString(\"×\");\n case \"div\":\n return mapString(\"÷\");\n case \"pm\":\n return mapString(\"±\");\n case \"mp\":\n return mapString(\"∓\");\n case \"oplus\":\n return mapString(\"⊕\");\n case \"ominus\":\n return mapString(\"⊖\");\n case \"otimes\":\n return mapString(\"⊗\");\n case \"oslash\":\n return mapString(\"⊘\");\n case \"circ\":\n return mapString(\"∘\");\n case \"cdot\":\n return mapString(\"⋅\");\n case \"bullet\":\n return mapString(\"∙\");\n case \"ltimes\":\n return mapString(\"⋉\");\n case \"rtimes\":\n return mapString(\"⋊\");\n case \"in\":\n return mapString(\"∈\");\n case \"ni\":\n return mapString(\"∋\");\n case \"notin\":\n return mapString(\"∉\");\n case \"subset\":\n return mapString(\"⊂\");\n case \"supset\":\n return mapString(\"⊃\");\n case \"subseteq\":\n return mapString(\"⊆\");\n case \"supseteq\":\n return mapString(\"⊇\");\n case \"nsubseteq\":\n return mapString(\"⊈\");\n case \"nsupseteq\":\n return mapString(\"⊉\");\n case \"subsetneq\":\n return mapString(\"⊊\");\n case \"supsetneq\":\n return mapString(\"⊋\");\n case \"cap\":\n return mapString(\"∩\");\n case \"cup\":\n return mapString(\"∪\");\n case \"emptyset\":\n return mapString(\"∅\");\n case \"infty\":\n return mapString(\"∞\");\n case \"partial\":\n return mapString(\"∂\");\n case \"aleph\":\n return mapString(\"ℵ\");\n case \"hbar\":\n return mapString(\"ℏ\");\n case \"wp\":\n return mapString(\"℘\");\n case \"Re\":\n return mapString(\"ℜ\");\n case \"Im\":\n return mapString(\"ℑ\");\n case \"alpha\":\n return mapString(\"α\");\n case \"beta\":\n return mapString(\"β\");\n case \"gamma\":\n return mapString(\"γ\");\n case \"delta\":\n return mapString(\"δ\");\n case \"epsilon\":\n return mapString(\"ϵ\");\n case \"zeta\":\n return mapString(\"ζ\");\n case \"eta\":\n return mapString(\"η\");\n case \"theta\":\n return mapString(\"θ\");\n case \"iota\":\n return mapString(\"ι\");\n case \"kappa\":\n return mapString(\"κ\");\n case \"lambda\":\n return mapString(\"λ\");\n case \"eta\":\n return mapString(\"η\");\n case \"mu\":\n return mapString(\"μ\");\n case \"nu\":\n return mapString(\"ν\");\n case \"xi\":\n return mapString(\"ξ\");\n case \"pi\":\n return mapString(\"π\");\n case \"rho\":\n return mapString(\"ρ\");\n case \"sigma\":\n return mapString(\"σ\");\n case \"tau\":\n return mapString(\"τ\");\n case \"upsilon\":\n return mapString(\"υ\");\n case \"phi\":\n return mapString(\"ϕ\");\n case \"chi\":\n return mapString(\"χ\");\n case \"psi\":\n return mapString(\"ψ\");\n case \"omega\":\n return mapString(\"ω\");\n case \"varepsilon\":\n return mapString(\"ε\");\n case \"vartheta\":\n return mapString(\"ϑ\");\n case \"varrho\":\n return mapString(\"ϱ\");\n case \"varsigma\":\n return mapString(\"ς\");\n case \"varphi\":\n return mapString(\"φ\");\n case \"Gamma\":\n return mapString(\"Γ\");\n case \"Delta\":\n return mapString(\"Δ\");\n case \"Theta\":\n return mapString(\"Θ\");\n case \"Lambda\":\n return mapString(\"Λ\");\n case \"Xi\":\n return mapString(\"Ξ\");\n case \"Pi\":\n return mapString(\"Π\");\n case \"Sigma\":\n return mapString(\"Σ\");\n case \"Upsilon\":\n return mapString(\"Υ\");\n case \"Phi\":\n return mapString(\"Φ\");\n case \"Psi\":\n return mapString(\"Ψ\");\n case \"Omega\":\n return mapString(\"Ω\");\n case \"newline\":\n case \"\\\\\":\n // line break\n return false;\n case \"^\": {\n const prev = runs.pop();\n if (!prev) break;\n return new docx.MathSuperScript({\n children: [prev],\n superScript: mapGroup(n.args?.[0]?.content ?? []),\n });\n }\n case \"_\": {\n const prev = runs.pop();\n if (!prev) break;\n return new docx.MathSubScript({\n children: [prev],\n subScript: mapGroup(n.args?.[0]?.content ?? []),\n });\n }\n case \"hat\":\n // TODO: implement\n break;\n case \"widehat\":\n // TODO: implement\n break;\n case \"sum\": {\n // TODO: support superscript and subscript\n return new docx.MathSum({\n children: [],\n });\n }\n case \"int\":\n return mapString(\"∫\");\n case \"frac\":\n case \"tfrac\":\n case \"dfrac\": {\n const args = n.args ?? [];\n if (\n args.length === 2 &&\n hasCurlyBrackets(args[0]) &&\n hasCurlyBrackets(args[1])\n ) {\n return new docx.MathFraction({\n numerator: mapGroup(args[0].content),\n denominator: mapGroup(args[1].content),\n });\n }\n break;\n }\n case \"sqrt\": {\n const args = n.args ?? [];\n if (args.length === 1 && hasCurlyBrackets(args[0])) {\n return new docx.MathRadical({\n children: mapGroup(args[0].content),\n });\n }\n if (\n args.length === 2 &&\n hasSquareBrackets(args[0]) &&\n hasCurlyBrackets(args[1])\n ) {\n return new docx.MathRadical({\n children: mapGroup(args[1].content),\n degree: mapGroup(args[0].content),\n });\n }\n break;\n }\n default:\n break;\n }\n return mapString(n.content);\n};\n\nconst mapGroup = (nodes: latex.Node[]): docx.MathRun[] => {\n const group: docx.MathRun[] = [];\n for (const c of nodes) {\n group.push(...(mapNode(c, group) || []));\n }\n return group;\n};\n\nconst mapNode = (\n n: latex.Node,\n runs: docx.MathRun[]\n): docx.MathRun[] | false => {\n switch (n.type) {\n case \"root\":\n break;\n case \"string\":\n return [mapString(n.content)];\n case \"whitespace\":\n break;\n case \"parbreak\":\n break;\n case \"comment\":\n break;\n case \"macro\":\n const run = mapMacro(n, runs);\n if (!run) {\n // line break\n return false;\n } else {\n return [run];\n }\n case \"environment\":\n case \"mathenv\":\n break;\n case \"verbatim\":\n break;\n case \"inlinemath\":\n break;\n case \"displaymath\":\n break;\n case \"group\":\n return mapGroup(n.content);\n case \"verb\":\n break;\n default:\n unreachable(n);\n }\n\n return [];\n};\n\nexport const parseLatex = (value: string): docx.MathRun[][] => {\n const parsed = parseMath(value);\n const paragraphs: docx.MathRun[][] = [[]];\n let runs: docx.MathRun[] = paragraphs[0]!;\n for (const n of parsed) {\n const res = mapNode(n, runs);\n if (!res) {\n // line break\n paragraphs.push((runs = []));\n } else {\n runs.push(...res);\n }\n }\n return paragraphs;\n};\n","import * as docx from \"docx\";\nimport { convertInchesToTwip, Packer } from \"docx\";\nimport type { IPropertiesOptions } from \"docx/build/file/core-properties\";\nimport type * as mdast from \"./models/mdast\";\nimport { parseLatex } from \"./latex\";\nimport { invariant, unreachable } from \"./utils\";\n\nconst ORDERED_LIST_REF = \"ordered\";\nconst INDENT = 0.5;\nconst DEFAULT_NUMBERINGS: docx.ILevelsOptions[] = [\n {\n level: 0,\n format: docx.LevelFormat.DECIMAL,\n text: \"%1.\",\n alignment: docx.AlignmentType.START,\n },\n {\n level: 1,\n format: docx.LevelFormat.DECIMAL,\n text: \"%2.\",\n alignment: docx.AlignmentType.START,\n style: {\n paragraph: {\n indent: { start: convertInchesToTwip(INDENT * 1) },\n },\n },\n },\n {\n level: 2,\n format: docx.LevelFormat.DECIMAL,\n text: \"%3.\",\n alignment: docx.AlignmentType.START,\n style: {\n paragraph: {\n indent: { start: convertInchesToTwip(INDENT * 2) },\n },\n },\n },\n {\n level: 3,\n format: docx.LevelFormat.DECIMAL,\n text: \"%4.\",\n alignment: docx.AlignmentType.START,\n style: {\n paragraph: {\n indent: { start: convertInchesToTwip(INDENT * 3) },\n },\n },\n },\n {\n level: 4,\n format: docx.LevelFormat.DECIMAL,\n text: \"%5.\",\n alignment: docx.AlignmentType.START,\n style: {\n paragraph: {\n indent: { start: convertInchesToTwip(INDENT * 4) },\n },\n },\n },\n {\n level: 5,\n format: docx.LevelFormat.DECIMAL,\n text: \"%6.\",\n alignment: docx.AlignmentType.START,\n style: {\n paragraph: {\n indent: { start: convertInchesToTwip(INDENT * 5) },\n },\n },\n },\n];\n\nexport type ImageDataMap = { [url: string]: ImageData };\n\nexport type ImageData = {\n image: docx.IImageOptions[\"data\"];\n width: number;\n height: number;\n};\n\nexport type ImageResolver = (url: string) => Promise<ImageData> | ImageData;\n\ntype Decoration = Readonly<\n {\n [key in (mdast.Emphasis | mdast.Strong | mdast.Delete)[\"type\"]]?: true;\n }\n>;\n\ntype ListInfo = Readonly<{\n level: number;\n ordered: boolean;\n}>;\n\ntype Context = Readonly<{\n deco: Decoration;\n images: ImageDataMap;\n list?: ListInfo;\n}>;\n\nexport type Opts = {\n output?: \"buffer\" | \"blob\";\n imageResolver?: ImageResolver;\n} & Pick<\n IPropertiesOptions,\n | \"title\"\n | \"subject\"\n | \"creator\"\n | \"keywords\"\n | \"description\"\n | \"lastModifiedBy\"\n | \"revision\"\n | \"styles\"\n | \"background\"\n>;\n\ntype DocxChild = docx.Paragraph | docx.Table | docx.TableOfContents;\ntype DocxContent = DocxChild | docx.ParagraphChild;\n\nexport const mdastToDocx = (\n node: mdast.Root,\n {\n output = \"buffer\",\n title,\n subject,\n creator,\n keywords,\n description,\n lastModifiedBy,\n revision,\n styles,\n background,\n }: Opts,\n images: ImageDataMap\n): Promise<any> => {\n const nodes = convertNodes(node.children, {\n deco: {},\n images,\n }) as DocxChild[];\n const doc = new docx.Document({\n title,\n subject,\n creator,\n keywords,\n description,\n lastModifiedBy,\n revision,\n styles,\n background,\n sections: [{ children: nodes }],\n numbering: {\n config: [\n {\n reference: ORDERED_LIST_REF,\n levels: DEFAULT_NUMBERINGS,\n },\n ],\n },\n });\n\n switch (output) {\n case \"buffer\":\n return Packer.toBuffer(doc);\n case \"blob\":\n return Packer.toBlob(doc);\n }\n};\n\nconst convertNodes = (nodes: mdast.Content[], ctx: Context): DocxContent[] => {\n const results: DocxContent[] = [];\n\n for (const node of nodes) {\n switch (node.type) {\n case \"paragraph\":\n results.push(buildParagraph(node, ctx));\n break;\n case \"heading\":\n results.push(buildHeading(node, ctx));\n break;\n case \"thematicBreak\":\n results.push(buildThematicBreak(node));\n break;\n case \"blockquote\":\n results.push(...buildBlockquote(node, ctx));\n break;\n case \"list\":\n results.push(...buildList(node, ctx));\n break;\n case \"listItem\":\n invariant(false, \"unreachable\");\n case \"table\":\n results.push(buildTable(node, ctx));\n break;\n case \"tableRow\":\n invariant(false, \"unreachable\");\n case \"tableCell\":\n invariant(false, \"unreachable\");\n case \"html\":\n results.push(buildHtml(node));\n break;\n case \"code\":\n results.push(buildCode(node));\n break;\n case \"yaml\":\n // FIXME: unimplemented\n break;\n case \"toml\":\n // FIXME: unimplemented\n break;\n case \"definition\":\n // FIXME: unimplemented\n break;\n case \"footnoteDefinition\":\n // FIXME: unimplemented\n break;\n case \"text\":\n results.push(buildText(node.value, ctx.deco));\n break;\n case \"emphasis\":\n case \"strong\":\n case \"delete\": {\n const { type, children } = node;\n results.push(\n ...convertNodes(children, {\n ...ctx,\n deco: { ...ctx.deco, [type]: true },\n })\n );\n break;\n }\n case \"inlineCode\":\n // FIXME: transform to text for now\n results.push(buildText(node.value, ctx.deco));\n break;\n case \"break\":\n results.push(buildBreak(node));\n break;\n case \"link\":\n results.push(buildLink(node, ctx));\n break;\n case \"image\":\n results.push(buildImage(node, ctx.images));\n break;\n case \"linkReference\":\n // FIXME: unimplemented\n break;\n case \"imageReference\":\n // FIXME: unimplemented\n break;\n case \"footnote\":\n results.push(buildFootnote(node, ctx));\n break;\n case \"footnoteReference\":\n // FIXME: unimplemented\n break;\n case \"math\":\n results.push(...buildMath(node));\n break;\n case \"inlineMath\":\n results.push(buildInlineMath(node));\n break;\n default:\n unreachable(node);\n break;\n }\n }\n return results;\n};\n\nconst buildParagraph = ({ children }: mdast.Paragraph, ctx: Context) => {\n const list = ctx.list;\n return new docx.Paragraph({\n children: convertNodes(children, ctx),\n ...(list &&\n (list.ordered\n ? {\n numbering: {\n reference: ORDERED_LIST_REF,\n level: list.level,\n },\n }\n : {\n bullet: {\n level: list.level,\n },\n })),\n });\n};\n\nconst buildHeading = ({ children, depth }: mdast.Heading, ctx: Context) => {\n let heading: docx.HeadingLevel;\n switch (depth) {\n case 1:\n heading = docx.HeadingLevel.TITLE;\n break;\n case 2:\n heading = docx.HeadingLevel.HEADING_1;\n break;\n case 3:\n heading = docx.HeadingLevel.HEADING_2;\n break;\n case 4:\n heading = docx.HeadingLevel.HEADING_3;\n break;\n case 5:\n heading = docx.HeadingLevel.HEADING_4;\n break;\n case 6:\n heading = docx.HeadingLevel.HEADING_5;\n break;\n }\n return new docx.Paragraph({\n heading,\n children: convertNodes(children, ctx),\n });\n};\n\nconst buildThematicBreak = (_: mdast.ThematicBreak) => {\n return new docx.Paragraph({\n thematicBreak: true,\n });\n};\n\nconst buildBlockquote = ({ children }: mdast.Blockquote, ctx: Context) => {\n // FIXME: do nothing for now\n return convertNodes(children, ctx);\n};\n\nconst buildList = (\n { children, ordered, start: _start, spread: _spread }: mdast.List,\n ctx: Context\n) => {\n const list: ListInfo = {\n level: ctx.list ? ctx.list.level + 1 : 0,\n ordered: !!ordered,\n };\n return children.reduce((acc, item) => {\n acc.push(\n ...buildListItem(item, {\n ...ctx,\n list,\n })\n );\n return acc;\n }, [] as DocxContent[]);\n};\n\nconst buildListItem = (\n { children, checked: _checked, spread: _spread }: mdast.ListItem,\n ctx: Context\n) => {\n return convertNodes(children, ctx);\n};\n\nconst buildTable = ({ children, align }: mdast.Table, ctx: Context) => {\n const cellAligns: docx.AlignmentType[] | undefined = align?.map((a) => {\n switch (a) {\n case \"left\":\n return docx.AlignmentType.LEFT;\n case \"right\":\n return docx.AlignmentType.RIGHT;\n case \"center\":\n return docx.AlignmentType.CENTER;\n default:\n return docx.AlignmentType.LEFT;\n }\n });\n\n return new docx.Table({\n rows: children.map((r) => {\n return buildTableRow(r, ctx, cellAligns);\n }),\n });\n};\n\nconst buildTableRow = (\n { children }: mdast.TableRow,\n ctx: Context,\n cellAligns: docx.AlignmentType[] | undefined\n) => {\n return new docx.TableRow({\n children: children.map((c, i) => {\n return buildTableCell(c, ctx, cellAligns?.[i]);\n }),\n });\n};\n\nconst buildTableCell = (\n { children }: mdast.TableCell,\n ctx: Context,\n align: docx.AlignmentType | undefined\n) => {\n return new docx.TableCell({\n children: [\n new docx.Paragraph({\n alignment: align,\n children: convertNodes(children, ctx),\n }),\n ],\n });\n};\n\nconst buildHtml = ({ value }: mdast.HTML) => {\n // FIXME: transform to text for now\n return new docx.Paragraph({\n children: [buildText(value, {})],\n });\n};\n\nconst buildCode = ({ value, lang: _lang, meta: _meta }: mdast.Code) => {\n // FIXME: transform to text for now\n return new docx.Paragraph({\n children: [buildText(value, {})],\n });\n};\n\nconst buildMath = ({ value }: mdast.Math) => {\n return parseLatex(value).map(\n (runs) =>\n new docx.Paragraph({\n children: [\n new docx.Math({\n children: runs,\n }),\n ],\n })\n );\n};\n\nconst buildInlineMath = ({ value }: mdast.InlineMath) => {\n return new docx.Math({\n children: parseLatex(value).flatMap((runs) => runs),\n });\n};\n\nconst buildText = (text: string, deco: Decoration) => {\n return new docx.TextRun({\n text,\n bold: deco.strong,\n italics: deco.emphasis,\n strike: deco.delete,\n });\n};\n\nconst buildBreak = (_: mdast.Break) => {\n return new docx.TextRun({ text: \"\", break: 1 });\n};\n\nconst buildLink = (\n { children, url, title: _title }: mdast.Link,\n ctx: Context\n) => {\n return new docx.ExternalHyperlink({\n link: url,\n children: convertNodes(children, ctx),\n });\n};\n\nconst buildImage = (\n { url, title: _title, alt: _alt }: mdast.Image,\n images: ImageDataMap\n) => {\n const img = images[url];\n invariant(img, `Fetch image was failed: ${url}`);\n\n const { image, width, height } = img;\n return new docx.ImageRun({\n data: image,\n transformation: {\n width,\n height,\n },\n });\n};\n\nconst buildFootnote = ({ children }: mdast.Footnote, ctx: Context) => {\n // FIXME: transform to paragraph for now\n return new docx.Paragraph({\n children: convertNodes(children, ctx),\n });\n};\n","import type { Plugin } from \"unified\";\nimport type * as mdast from \"mdast\";\nimport { visit } from \"unist-util-visit\";\nimport { mdastToDocx, Opts, ImageDataMap } from \"./transformer\";\nimport { invariant } from \"./utils\";\n\nexport type Options = Opts;\n\nconst plugin: Plugin<[Options?]> = function (opts = {}) {\n let images: ImageDataMap = {};\n\n this.Compiler = (node) => {\n return mdastToDocx(node as any, opts, images);\n };\n\n return async (node) => {\n const imageList: mdast.Image[] = [];\n visit(node, \"image\", (node) => {\n imageList.push(node);\n });\n if (imageList.length === 0) {\n return node;\n }\n\n const imageResolver = opts.imageResolver;\n invariant(imageResolver, \"options.imageResolver is not defined.\");\n\n const imageDatas = await Promise.all(\n imageList.map(({ url }) => imageResolver(url))\n );\n images = imageList.reduce((acc, img, i) => {\n acc[img.url] = imageDatas[i]!;\n return acc;\n }, {} as ImageDataMap);\n return node;\n };\n};\nexport default plugin;\n"],"names":["docx","parseMath","convertInchesToTwip","Packer","__awaiter","visit"],"mappings":"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"}
|
package/lib/index.mjs
CHANGED
|
@@ -12,10 +12,10 @@ function invariant(cond, message) {
|
|
|
12
12
|
throw new Error(message);
|
|
13
13
|
}
|
|
14
14
|
|
|
15
|
-
const
|
|
15
|
+
const hasSquareBrackets = (arg) => {
|
|
16
16
|
return !!arg && arg.openMark === "[" && arg.closeMark === "]";
|
|
17
17
|
};
|
|
18
|
-
const
|
|
18
|
+
const hasCurlyBrackets = (arg) => {
|
|
19
19
|
return !!arg && arg.openMark === "{" && arg.closeMark === "}";
|
|
20
20
|
};
|
|
21
21
|
const mapString = (s) => new docx.MathRun(s);
|
|
@@ -261,8 +261,8 @@ const mapMacro = (n, runs) => {
|
|
|
261
261
|
case "dfrac": {
|
|
262
262
|
const args = (_g = n.args) !== null && _g !== void 0 ? _g : [];
|
|
263
263
|
if (args.length === 2 &&
|
|
264
|
-
|
|
265
|
-
|
|
264
|
+
hasCurlyBrackets(args[0]) &&
|
|
265
|
+
hasCurlyBrackets(args[1])) {
|
|
266
266
|
return new docx.MathFraction({
|
|
267
267
|
numerator: mapGroup(args[0].content),
|
|
268
268
|
denominator: mapGroup(args[1].content),
|
|
@@ -272,14 +272,14 @@ const mapMacro = (n, runs) => {
|
|
|
272
272
|
}
|
|
273
273
|
case "sqrt": {
|
|
274
274
|
const args = (_h = n.args) !== null && _h !== void 0 ? _h : [];
|
|
275
|
-
if (args.length === 1 &&
|
|
275
|
+
if (args.length === 1 && hasCurlyBrackets(args[0])) {
|
|
276
276
|
return new docx.MathRadical({
|
|
277
277
|
children: mapGroup(args[0].content),
|
|
278
278
|
});
|
|
279
279
|
}
|
|
280
280
|
if (args.length === 2 &&
|
|
281
|
-
|
|
282
|
-
|
|
281
|
+
hasSquareBrackets(args[0]) &&
|
|
282
|
+
hasCurlyBrackets(args[1])) {
|
|
283
283
|
return new docx.MathRadical({
|
|
284
284
|
children: mapGroup(args[1].content),
|
|
285
285
|
degree: mapGroup(args[0].content),
|
|
@@ -418,7 +418,7 @@ const DEFAULT_NUMBERINGS = [
|
|
|
418
418
|
},
|
|
419
419
|
},
|
|
420
420
|
];
|
|
421
|
-
|
|
421
|
+
const mdastToDocx = (node, { output = "buffer", title, subject, creator, keywords, description, lastModifiedBy, revision, styles, background, }, images) => {
|
|
422
422
|
const nodes = convertNodes(node.children, {
|
|
423
423
|
deco: {},
|
|
424
424
|
images,
|
|
@@ -443,14 +443,14 @@ function mdastToDocx(node, { output, title, subject, creator, keywords, descript
|
|
|
443
443
|
],
|
|
444
444
|
},
|
|
445
445
|
});
|
|
446
|
-
switch (output
|
|
446
|
+
switch (output) {
|
|
447
447
|
case "buffer":
|
|
448
448
|
return Packer.toBuffer(doc);
|
|
449
449
|
case "blob":
|
|
450
450
|
return Packer.toBlob(doc);
|
|
451
451
|
}
|
|
452
|
-
}
|
|
453
|
-
|
|
452
|
+
};
|
|
453
|
+
const convertNodes = (nodes, ctx) => {
|
|
454
454
|
const results = [];
|
|
455
455
|
for (const node of nodes) {
|
|
456
456
|
switch (node.type) {
|
|
@@ -543,8 +543,8 @@ function convertNodes(nodes, ctx) {
|
|
|
543
543
|
}
|
|
544
544
|
}
|
|
545
545
|
return results;
|
|
546
|
-
}
|
|
547
|
-
|
|
546
|
+
};
|
|
547
|
+
const buildParagraph = ({ children }, ctx) => {
|
|
548
548
|
const list = ctx.list;
|
|
549
549
|
return new docx.Paragraph(Object.assign({ children: convertNodes(children, ctx) }, (list &&
|
|
550
550
|
(list.ordered
|
|
@@ -559,8 +559,8 @@ function buildParagraph({ children }, ctx) {
|
|
|
559
559
|
level: list.level,
|
|
560
560
|
},
|
|
561
561
|
}))));
|
|
562
|
-
}
|
|
563
|
-
|
|
562
|
+
};
|
|
563
|
+
const buildHeading = ({ children, depth }, ctx) => {
|
|
564
564
|
let heading;
|
|
565
565
|
switch (depth) {
|
|
566
566
|
case 1:
|
|
@@ -586,17 +586,17 @@ function buildHeading({ children, depth }, ctx) {
|
|
|
586
586
|
heading,
|
|
587
587
|
children: convertNodes(children, ctx),
|
|
588
588
|
});
|
|
589
|
-
}
|
|
590
|
-
|
|
589
|
+
};
|
|
590
|
+
const buildThematicBreak = (_) => {
|
|
591
591
|
return new docx.Paragraph({
|
|
592
592
|
thematicBreak: true,
|
|
593
593
|
});
|
|
594
|
-
}
|
|
595
|
-
|
|
594
|
+
};
|
|
595
|
+
const buildBlockquote = ({ children }, ctx) => {
|
|
596
596
|
// FIXME: do nothing for now
|
|
597
597
|
return convertNodes(children, ctx);
|
|
598
|
-
}
|
|
599
|
-
|
|
598
|
+
};
|
|
599
|
+
const buildList = ({ children, ordered, start: _start, spread: _spread }, ctx) => {
|
|
600
600
|
const list = {
|
|
601
601
|
level: ctx.list ? ctx.list.level + 1 : 0,
|
|
602
602
|
ordered: !!ordered,
|
|
@@ -605,11 +605,11 @@ function buildList({ children, ordered, start: _start, spread: _spread }, ctx) {
|
|
|
605
605
|
acc.push(...buildListItem(item, Object.assign(Object.assign({}, ctx), { list })));
|
|
606
606
|
return acc;
|
|
607
607
|
}, []);
|
|
608
|
-
}
|
|
609
|
-
|
|
608
|
+
};
|
|
609
|
+
const buildListItem = ({ children, checked: _checked, spread: _spread }, ctx) => {
|
|
610
610
|
return convertNodes(children, ctx);
|
|
611
|
-
}
|
|
612
|
-
|
|
611
|
+
};
|
|
612
|
+
const buildTable = ({ children, align }, ctx) => {
|
|
613
613
|
const cellAligns = align === null || align === void 0 ? void 0 : align.map((a) => {
|
|
614
614
|
switch (a) {
|
|
615
615
|
case "left":
|
|
@@ -627,15 +627,15 @@ function buildTable({ children, align }, ctx) {
|
|
|
627
627
|
return buildTableRow(r, ctx, cellAligns);
|
|
628
628
|
}),
|
|
629
629
|
});
|
|
630
|
-
}
|
|
631
|
-
|
|
630
|
+
};
|
|
631
|
+
const buildTableRow = ({ children }, ctx, cellAligns) => {
|
|
632
632
|
return new docx.TableRow({
|
|
633
633
|
children: children.map((c, i) => {
|
|
634
634
|
return buildTableCell(c, ctx, cellAligns === null || cellAligns === void 0 ? void 0 : cellAligns[i]);
|
|
635
635
|
}),
|
|
636
636
|
});
|
|
637
|
-
}
|
|
638
|
-
|
|
637
|
+
};
|
|
638
|
+
const buildTableCell = ({ children }, ctx, align) => {
|
|
639
639
|
return new docx.TableCell({
|
|
640
640
|
children: [
|
|
641
641
|
new docx.Paragraph({
|
|
@@ -644,20 +644,20 @@ function buildTableCell({ children }, ctx, align) {
|
|
|
644
644
|
}),
|
|
645
645
|
],
|
|
646
646
|
});
|
|
647
|
-
}
|
|
648
|
-
|
|
647
|
+
};
|
|
648
|
+
const buildHtml = ({ value }) => {
|
|
649
649
|
// FIXME: transform to text for now
|
|
650
650
|
return new docx.Paragraph({
|
|
651
651
|
children: [buildText(value, {})],
|
|
652
652
|
});
|
|
653
|
-
}
|
|
654
|
-
|
|
653
|
+
};
|
|
654
|
+
const buildCode = ({ value, lang: _lang, meta: _meta }) => {
|
|
655
655
|
// FIXME: transform to text for now
|
|
656
656
|
return new docx.Paragraph({
|
|
657
657
|
children: [buildText(value, {})],
|
|
658
658
|
});
|
|
659
|
-
}
|
|
660
|
-
|
|
659
|
+
};
|
|
660
|
+
const buildMath = ({ value }) => {
|
|
661
661
|
return parseLatex(value).map((runs) => new docx.Paragraph({
|
|
662
662
|
children: [
|
|
663
663
|
new docx.Math({
|
|
@@ -665,30 +665,30 @@ function buildMath({ value }) {
|
|
|
665
665
|
}),
|
|
666
666
|
],
|
|
667
667
|
}));
|
|
668
|
-
}
|
|
669
|
-
|
|
668
|
+
};
|
|
669
|
+
const buildInlineMath = ({ value }) => {
|
|
670
670
|
return new docx.Math({
|
|
671
671
|
children: parseLatex(value).flatMap((runs) => runs),
|
|
672
672
|
});
|
|
673
|
-
}
|
|
674
|
-
|
|
673
|
+
};
|
|
674
|
+
const buildText = (text, deco) => {
|
|
675
675
|
return new docx.TextRun({
|
|
676
676
|
text,
|
|
677
677
|
bold: deco.strong,
|
|
678
678
|
italics: deco.emphasis,
|
|
679
679
|
strike: deco.delete,
|
|
680
680
|
});
|
|
681
|
-
}
|
|
682
|
-
|
|
681
|
+
};
|
|
682
|
+
const buildBreak = (_) => {
|
|
683
683
|
return new docx.TextRun({ text: "", break: 1 });
|
|
684
|
-
}
|
|
685
|
-
|
|
684
|
+
};
|
|
685
|
+
const buildLink = ({ children, url, title: _title }, ctx) => {
|
|
686
686
|
return new docx.ExternalHyperlink({
|
|
687
687
|
link: url,
|
|
688
688
|
children: convertNodes(children, ctx),
|
|
689
689
|
});
|
|
690
|
-
}
|
|
691
|
-
|
|
690
|
+
};
|
|
691
|
+
const buildImage = ({ url, title: _title, alt: _alt }, images) => {
|
|
692
692
|
const img = images[url];
|
|
693
693
|
invariant(img, `Fetch image was failed: ${url}`);
|
|
694
694
|
const { image, width, height } = img;
|
|
@@ -699,13 +699,13 @@ function buildImage({ url, title: _title, alt: _alt }, images) {
|
|
|
699
699
|
height,
|
|
700
700
|
},
|
|
701
701
|
});
|
|
702
|
-
}
|
|
703
|
-
|
|
702
|
+
};
|
|
703
|
+
const buildFootnote = ({ children }, ctx) => {
|
|
704
704
|
// FIXME: transform to paragraph for now
|
|
705
705
|
return new docx.Paragraph({
|
|
706
706
|
children: convertNodes(children, ctx),
|
|
707
707
|
});
|
|
708
|
-
}
|
|
708
|
+
};
|
|
709
709
|
|
|
710
710
|
const plugin = function (opts = {}) {
|
|
711
711
|
let images = {};
|
package/lib/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../src/src/utils.ts","../src/src/latex.ts","../src/src/transformer.ts","../src/src/plugin.ts"],"sourcesContent":["export const unreachable = (_: never): never => {\n throw new Error(\"unreachable\");\n};\n\nexport function invariant(cond: any, message: string): asserts cond {\n if (!cond) throw new Error(message);\n}\n","import * as docx from \"docx\";\nimport { parseMath } from \"@unified-latex/unified-latex-util-parse\";\nimport type * as Latex from \"@unified-latex/unified-latex-types\";\nimport { unreachable } from \"./utils\";\n\nconst hasSquareBracket = (\n arg: Latex.Argument | undefined\n): arg is Latex.Argument => {\n return !!arg && arg.openMark === \"[\" && arg.closeMark === \"]\";\n};\nconst hasCurlyBracket = (\n arg: Latex.Argument | undefined\n): arg is Latex.Argument => {\n return !!arg && arg.openMark === \"{\" && arg.closeMark === \"}\";\n};\n\nconst mapString = (s: string): docx.MathRun => new docx.MathRun(s);\n\nconst mapMacro = (\n n: Latex.Macro,\n runs: docx.MathRun[]\n): docx.MathRun | false => {\n switch (n.content) {\n case \"#\":\n return mapString(\"#\");\n case \"$\":\n return mapString(\"$\");\n case \"%\":\n return mapString(\"%\");\n case \"&\":\n return mapString(\"&\");\n case \"textasciitilde\":\n return mapString(\"~\");\n case \"textasciicircum\":\n return mapString(\"^\");\n case \"textbackslash\":\n return mapString(\"∖\");\n case \"{\":\n return mapString(\"{\");\n case \"}\":\n return mapString(\"}\");\n case \"textbar\":\n return mapString(\"|\");\n case \"textless\":\n return mapString(\"<\");\n case \"textgreater\":\n return mapString(\">\");\n case \"neq\":\n return mapString(\"≠\");\n case \"sim\":\n return mapString(\"∼\");\n case \"simeq\":\n return mapString(\"≃\");\n case \"approx\":\n return mapString(\"≈\");\n case \"fallingdotseq\":\n return mapString(\"≒\");\n case \"risingdotseq\":\n return mapString(\"≓\");\n case \"equiv\":\n return mapString(\"≡\");\n case \"geq\":\n return mapString(\"≥\");\n case \"geqq\":\n return mapString(\"≧\");\n case \"leq\":\n return mapString(\"≤\");\n case \"leqq\":\n return mapString(\"≦\");\n case \"gg\":\n return mapString(\"≫\");\n case \"ll\":\n return mapString(\"≪\");\n case \"times\":\n return mapString(\"×\");\n case \"div\":\n return mapString(\"÷\");\n case \"pm\":\n return mapString(\"±\");\n case \"mp\":\n return mapString(\"∓\");\n case \"oplus\":\n return mapString(\"⊕\");\n case \"ominus\":\n return mapString(\"⊖\");\n case \"otimes\":\n return mapString(\"⊗\");\n case \"oslash\":\n return mapString(\"⊘\");\n case \"circ\":\n return mapString(\"∘\");\n case \"cdot\":\n return mapString(\"⋅\");\n case \"bullet\":\n return mapString(\"∙\");\n case \"ltimes\":\n return mapString(\"⋉\");\n case \"rtimes\":\n return mapString(\"⋊\");\n case \"in\":\n return mapString(\"∈\");\n case \"ni\":\n return mapString(\"∋\");\n case \"notin\":\n return mapString(\"∉\");\n case \"subset\":\n return mapString(\"⊂\");\n case \"supset\":\n return mapString(\"⊃\");\n case \"subseteq\":\n return mapString(\"⊆\");\n case \"supseteq\":\n return mapString(\"⊇\");\n case \"nsubseteq\":\n return mapString(\"⊈\");\n case \"nsupseteq\":\n return mapString(\"⊉\");\n case \"subsetneq\":\n return mapString(\"⊊\");\n case \"supsetneq\":\n return mapString(\"⊋\");\n case \"cap\":\n return mapString(\"∩\");\n case \"cup\":\n return mapString(\"∪\");\n case \"emptyset\":\n return mapString(\"∅\");\n case \"infty\":\n return mapString(\"∞\");\n case \"partial\":\n return mapString(\"∂\");\n case \"aleph\":\n return mapString(\"ℵ\");\n case \"hbar\":\n return mapString(\"ℏ\");\n case \"wp\":\n return mapString(\"℘\");\n case \"Re\":\n return mapString(\"ℜ\");\n case \"Im\":\n return mapString(\"ℑ\");\n case \"alpha\":\n return mapString(\"α\");\n case \"beta\":\n return mapString(\"β\");\n case \"gamma\":\n return mapString(\"γ\");\n case \"delta\":\n return mapString(\"δ\");\n case \"epsilon\":\n return mapString(\"ϵ\");\n case \"zeta\":\n return mapString(\"ζ\");\n case \"eta\":\n return mapString(\"η\");\n case \"theta\":\n return mapString(\"θ\");\n case \"iota\":\n return mapString(\"ι\");\n case \"kappa\":\n return mapString(\"κ\");\n case \"lambda\":\n return mapString(\"λ\");\n case \"eta\":\n return mapString(\"η\");\n case \"mu\":\n return mapString(\"μ\");\n case \"nu\":\n return mapString(\"ν\");\n case \"xi\":\n return mapString(\"ξ\");\n case \"pi\":\n return mapString(\"π\");\n case \"rho\":\n return mapString(\"ρ\");\n case \"sigma\":\n return mapString(\"σ\");\n case \"tau\":\n return mapString(\"τ\");\n case \"upsilon\":\n return mapString(\"υ\");\n case \"phi\":\n return mapString(\"ϕ\");\n case \"chi\":\n return mapString(\"χ\");\n case \"psi\":\n return mapString(\"ψ\");\n case \"omega\":\n return mapString(\"ω\");\n case \"varepsilon\":\n return mapString(\"ε\");\n case \"vartheta\":\n return mapString(\"ϑ\");\n case \"varrho\":\n return mapString(\"ϱ\");\n case \"varsigma\":\n return mapString(\"ς\");\n case \"varphi\":\n return mapString(\"φ\");\n case \"Gamma\":\n return mapString(\"Γ\");\n case \"Delta\":\n return mapString(\"Δ\");\n case \"Theta\":\n return mapString(\"Θ\");\n case \"Lambda\":\n return mapString(\"Λ\");\n case \"Xi\":\n return mapString(\"Ξ\");\n case \"Pi\":\n return mapString(\"Π\");\n case \"Sigma\":\n return mapString(\"Σ\");\n case \"Upsilon\":\n return mapString(\"Υ\");\n case \"Phi\":\n return mapString(\"Φ\");\n case \"Psi\":\n return mapString(\"Ψ\");\n case \"Omega\":\n return mapString(\"Ω\");\n case \"newline\":\n case \"\\\\\":\n // line break\n return false;\n case \"^\": {\n const prev = runs.pop();\n if (!prev) break;\n return new docx.MathSuperScript({\n children: [prev],\n superScript: mapGroup(n.args?.[0]?.content ?? []),\n });\n }\n case \"_\": {\n const prev = runs.pop();\n if (!prev) break;\n return new docx.MathSubScript({\n children: [prev],\n subScript: mapGroup(n.args?.[0]?.content ?? []),\n });\n }\n case \"hat\":\n // TODO: implement\n break;\n case \"widehat\":\n // TODO: implement\n break;\n case \"sum\": {\n // TODO: support superscript and subscript\n return new docx.MathSum({\n children: [],\n });\n }\n case \"int\":\n return mapString(\"∫\");\n case \"frac\":\n case \"tfrac\":\n case \"dfrac\": {\n const args = n.args ?? [];\n if (\n args.length === 2 &&\n hasCurlyBracket(args[0]) &&\n hasCurlyBracket(args[1])\n ) {\n return new docx.MathFraction({\n numerator: mapGroup(args[0].content),\n denominator: mapGroup(args[1].content),\n });\n }\n break;\n }\n case \"sqrt\": {\n const args = n.args ?? [];\n if (args.length === 1 && hasCurlyBracket(args[0])) {\n return new docx.MathRadical({\n children: mapGroup(args[0].content),\n });\n }\n if (\n args.length === 2 &&\n hasSquareBracket(args[0]) &&\n hasCurlyBracket(args[1])\n ) {\n return new docx.MathRadical({\n children: mapGroup(args[1].content),\n degree: mapGroup(args[0].content),\n });\n }\n break;\n }\n default:\n break;\n }\n return mapString(n.content);\n};\n\nconst mapGroup = (nodes: Latex.Node[]): docx.MathRun[] => {\n const group: docx.MathRun[] = [];\n for (const c of nodes) {\n group.push(...(mapNode(c, group) || []));\n }\n return group;\n};\n\nconst mapNode = (\n n: Latex.Node,\n runs: docx.MathRun[]\n): docx.MathRun[] | false => {\n switch (n.type) {\n case \"root\":\n break;\n case \"string\":\n return [mapString(n.content)];\n case \"whitespace\":\n break;\n case \"parbreak\":\n break;\n case \"comment\":\n break;\n case \"macro\":\n const run = mapMacro(n, runs);\n if (!run) {\n // line break\n return false;\n } else {\n return [run];\n }\n case \"environment\":\n case \"mathenv\":\n break;\n case \"verbatim\":\n break;\n case \"inlinemath\":\n break;\n case \"displaymath\":\n break;\n case \"group\":\n return mapGroup(n.content);\n case \"verb\":\n break;\n default:\n unreachable(n);\n }\n\n return [];\n};\n\nexport const parseLatex = (value: string): docx.MathRun[][] => {\n const parsed = parseMath(value);\n const paragraphs: docx.MathRun[][] = [[]];\n let runs: docx.MathRun[] = paragraphs[0]!;\n for (const n of parsed) {\n const res = mapNode(n, runs);\n if (!res) {\n // line break\n paragraphs.push((runs = []));\n } else {\n runs.push(...res);\n }\n }\n return paragraphs;\n};\n","import * as docx from \"docx\";\nimport { convertInchesToTwip, Packer } from \"docx\";\nimport type { IPropertiesOptions } from \"docx/build/file/core-properties\";\nimport type * as mdast from \"./models/mdast\";\nimport { parseLatex } from \"./latex\";\nimport { invariant, unreachable } from \"./utils\";\n\nconst ORDERED_LIST_REF = \"ordered\";\nconst INDENT = 0.5;\nconst DEFAULT_NUMBERINGS: docx.ILevelsOptions[] = [\n {\n level: 0,\n format: docx.LevelFormat.DECIMAL,\n text: \"%1.\",\n alignment: docx.AlignmentType.START,\n },\n {\n level: 1,\n format: docx.LevelFormat.DECIMAL,\n text: \"%2.\",\n alignment: docx.AlignmentType.START,\n style: {\n paragraph: {\n indent: { start: convertInchesToTwip(INDENT * 1) },\n },\n },\n },\n {\n level: 2,\n format: docx.LevelFormat.DECIMAL,\n text: \"%3.\",\n alignment: docx.AlignmentType.START,\n style: {\n paragraph: {\n indent: { start: convertInchesToTwip(INDENT * 2) },\n },\n },\n },\n {\n level: 3,\n format: docx.LevelFormat.DECIMAL,\n text: \"%4.\",\n alignment: docx.AlignmentType.START,\n style: {\n paragraph: {\n indent: { start: convertInchesToTwip(INDENT * 3) },\n },\n },\n },\n {\n level: 4,\n format: docx.LevelFormat.DECIMAL,\n text: \"%5.\",\n alignment: docx.AlignmentType.START,\n style: {\n paragraph: {\n indent: { start: convertInchesToTwip(INDENT * 4) },\n },\n },\n },\n {\n level: 5,\n format: docx.LevelFormat.DECIMAL,\n text: \"%6.\",\n alignment: docx.AlignmentType.START,\n style: {\n paragraph: {\n indent: { start: convertInchesToTwip(INDENT * 5) },\n },\n },\n },\n];\n\nexport type ImageDataMap = { [url: string]: ImageData };\n\nexport type ImageData = {\n image: docx.IImageOptions[\"data\"];\n width: number;\n height: number;\n};\n\nexport type ImageResolver = (url: string) => Promise<ImageData> | ImageData;\n\ntype Decoration = Readonly<\n {\n [key in (mdast.Emphasis | mdast.Strong | mdast.Delete)[\"type\"]]?: true;\n }\n>;\n\ntype ListInfo = Readonly<{\n level: number;\n ordered: boolean;\n}>;\n\ntype Context = Readonly<{\n deco: Decoration;\n images: ImageDataMap;\n list?: ListInfo;\n}>;\n\nexport type Opts = {\n output?: \"buffer\" | \"blob\";\n imageResolver?: ImageResolver;\n} & Pick<\n IPropertiesOptions,\n | \"title\"\n | \"subject\"\n | \"creator\"\n | \"keywords\"\n | \"description\"\n | \"lastModifiedBy\"\n | \"revision\"\n | \"styles\"\n | \"background\"\n>;\n\ntype DocxChild = docx.Paragraph | docx.Table | docx.TableOfContents;\ntype DocxContent = DocxChild | docx.ParagraphChild;\n\nexport function mdastToDocx(\n node: mdast.Root,\n {\n output,\n title,\n subject,\n creator,\n keywords,\n description,\n lastModifiedBy,\n revision,\n styles,\n background,\n }: Opts,\n images: ImageDataMap\n): Promise<any> {\n const nodes = convertNodes(node.children, {\n deco: {},\n images,\n }) as DocxChild[];\n const doc = new docx.Document({\n title,\n subject,\n creator,\n keywords,\n description,\n lastModifiedBy,\n revision,\n styles,\n background,\n sections: [{ children: nodes }],\n numbering: {\n config: [\n {\n reference: ORDERED_LIST_REF,\n levels: DEFAULT_NUMBERINGS,\n },\n ],\n },\n });\n\n switch (output ?? \"buffer\") {\n case \"buffer\":\n return Packer.toBuffer(doc);\n case \"blob\":\n return Packer.toBlob(doc);\n }\n}\n\nfunction convertNodes(nodes: mdast.Content[], ctx: Context): DocxContent[] {\n const results: DocxContent[] = [];\n\n for (const node of nodes) {\n switch (node.type) {\n case \"paragraph\":\n results.push(buildParagraph(node, ctx));\n break;\n case \"heading\":\n results.push(buildHeading(node, ctx));\n break;\n case \"thematicBreak\":\n results.push(buildThematicBreak(node));\n break;\n case \"blockquote\":\n results.push(...buildBlockquote(node, ctx));\n break;\n case \"list\":\n results.push(...buildList(node, ctx));\n break;\n case \"listItem\":\n invariant(false, \"unreachable\");\n case \"table\":\n results.push(buildTable(node, ctx));\n break;\n case \"tableRow\":\n invariant(false, \"unreachable\");\n case \"tableCell\":\n invariant(false, \"unreachable\");\n case \"html\":\n results.push(buildHtml(node));\n break;\n case \"code\":\n results.push(buildCode(node));\n break;\n case \"yaml\":\n // FIXME: unimplemented\n break;\n case \"toml\":\n // FIXME: unimplemented\n break;\n case \"definition\":\n // FIXME: unimplemented\n break;\n case \"footnoteDefinition\":\n // FIXME: unimplemented\n break;\n case \"text\":\n results.push(buildText(node.value, ctx.deco));\n break;\n case \"emphasis\":\n case \"strong\":\n case \"delete\": {\n const { type, children } = node;\n results.push(\n ...convertNodes(children, {\n ...ctx,\n deco: { ...ctx.deco, [type]: true },\n })\n );\n break;\n }\n case \"inlineCode\":\n // FIXME: transform to text for now\n results.push(buildText(node.value, ctx.deco));\n break;\n case \"break\":\n results.push(buildBreak(node));\n break;\n case \"link\":\n results.push(buildLink(node, ctx));\n break;\n case \"image\":\n results.push(buildImage(node, ctx.images));\n break;\n case \"linkReference\":\n // FIXME: unimplemented\n break;\n case \"imageReference\":\n // FIXME: unimplemented\n break;\n case \"footnote\":\n results.push(buildFootnote(node, ctx));\n break;\n case \"footnoteReference\":\n // FIXME: unimplemented\n break;\n case \"math\":\n results.push(...buildMath(node));\n break;\n case \"inlineMath\":\n results.push(buildInlineMath(node));\n break;\n default:\n unreachable(node);\n break;\n }\n }\n return results;\n}\n\nfunction buildParagraph({ children }: mdast.Paragraph, ctx: Context) {\n const list = ctx.list;\n return new docx.Paragraph({\n children: convertNodes(children, ctx),\n ...(list &&\n (list.ordered\n ? {\n numbering: {\n reference: ORDERED_LIST_REF,\n level: list.level,\n },\n }\n : {\n bullet: {\n level: list.level,\n },\n })),\n });\n}\n\nfunction buildHeading({ children, depth }: mdast.Heading, ctx: Context) {\n let heading: docx.HeadingLevel;\n switch (depth) {\n case 1:\n heading = docx.HeadingLevel.TITLE;\n break;\n case 2:\n heading = docx.HeadingLevel.HEADING_1;\n break;\n case 3:\n heading = docx.HeadingLevel.HEADING_2;\n break;\n case 4:\n heading = docx.HeadingLevel.HEADING_3;\n break;\n case 5:\n heading = docx.HeadingLevel.HEADING_4;\n break;\n case 6:\n heading = docx.HeadingLevel.HEADING_5;\n break;\n }\n return new docx.Paragraph({\n heading,\n children: convertNodes(children, ctx),\n });\n}\n\nfunction buildThematicBreak(_: mdast.ThematicBreak) {\n return new docx.Paragraph({\n thematicBreak: true,\n });\n}\n\nfunction buildBlockquote({ children }: mdast.Blockquote, ctx: Context) {\n // FIXME: do nothing for now\n return convertNodes(children, ctx);\n}\n\nfunction buildList(\n { children, ordered, start: _start, spread: _spread }: mdast.List,\n ctx: Context\n) {\n const list: ListInfo = {\n level: ctx.list ? ctx.list.level + 1 : 0,\n ordered: !!ordered,\n };\n return children.reduce((acc, item) => {\n acc.push(\n ...buildListItem(item, {\n ...ctx,\n list,\n })\n );\n return acc;\n }, [] as DocxContent[]);\n}\n\nfunction buildListItem(\n { children, checked: _checked, spread: _spread }: mdast.ListItem,\n ctx: Context\n) {\n return convertNodes(children, ctx);\n}\n\nfunction buildTable({ children, align }: mdast.Table, ctx: Context) {\n const cellAligns: docx.AlignmentType[] | undefined = align?.map((a) => {\n switch (a) {\n case \"left\":\n return docx.AlignmentType.LEFT;\n case \"right\":\n return docx.AlignmentType.RIGHT;\n case \"center\":\n return docx.AlignmentType.CENTER;\n default:\n return docx.AlignmentType.LEFT;\n }\n });\n\n return new docx.Table({\n rows: children.map((r) => {\n return buildTableRow(r, ctx, cellAligns);\n }),\n });\n}\n\nfunction buildTableRow(\n { children }: mdast.TableRow,\n ctx: Context,\n cellAligns: docx.AlignmentType[] | undefined\n) {\n return new docx.TableRow({\n children: children.map((c, i) => {\n return buildTableCell(c, ctx, cellAligns?.[i]);\n }),\n });\n}\n\nfunction buildTableCell(\n { children }: mdast.TableCell,\n ctx: Context,\n align: docx.AlignmentType | undefined\n) {\n return new docx.TableCell({\n children: [\n new docx.Paragraph({\n alignment: align,\n children: convertNodes(children, ctx),\n }),\n ],\n });\n}\n\nfunction buildHtml({ value }: mdast.HTML) {\n // FIXME: transform to text for now\n return new docx.Paragraph({\n children: [buildText(value, {})],\n });\n}\n\nfunction buildCode({ value, lang: _lang, meta: _meta }: mdast.Code) {\n // FIXME: transform to text for now\n return new docx.Paragraph({\n children: [buildText(value, {})],\n });\n}\n\nfunction buildMath({ value }: mdast.Math) {\n return parseLatex(value).map(\n (runs) =>\n new docx.Paragraph({\n children: [\n new docx.Math({\n children: runs,\n }),\n ],\n })\n );\n}\n\nfunction buildInlineMath({ value }: mdast.InlineMath) {\n return new docx.Math({\n children: parseLatex(value).flatMap((runs) => runs),\n });\n}\n\nfunction buildText(text: string, deco: Decoration) {\n return new docx.TextRun({\n text,\n bold: deco.strong,\n italics: deco.emphasis,\n strike: deco.delete,\n });\n}\n\nfunction buildBreak(_: mdast.Break) {\n return new docx.TextRun({ text: \"\", break: 1 });\n}\n\nfunction buildLink({ children, url, title: _title }: mdast.Link, ctx: Context) {\n return new docx.ExternalHyperlink({\n link: url,\n children: convertNodes(children, ctx),\n });\n}\n\nfunction buildImage(\n { url, title: _title, alt: _alt }: mdast.Image,\n images: ImageDataMap\n) {\n const img = images[url];\n invariant(img, `Fetch image was failed: ${url}`);\n\n const { image, width, height } = img;\n return new docx.ImageRun({\n data: image,\n transformation: {\n width,\n height,\n },\n });\n}\n\nfunction buildFootnote({ children }: mdast.Footnote, ctx: Context) {\n // FIXME: transform to paragraph for now\n return new docx.Paragraph({\n children: convertNodes(children, ctx),\n });\n}\n","import type { Plugin } from \"unified\";\nimport type * as mdast from \"mdast\";\nimport { visit } from \"unist-util-visit\";\nimport { mdastToDocx, Opts, ImageDataMap } from \"./transformer\";\nimport { invariant } from \"./utils\";\n\nexport type Options = Opts;\n\nconst plugin: Plugin<[Options?]> = function (opts = {}) {\n let images: ImageDataMap = {};\n\n this.Compiler = (node) => {\n return mdastToDocx(node as any, opts, images);\n };\n\n return async (node) => {\n const imageList: mdast.Image[] = [];\n visit(node, \"image\", (node) => {\n imageList.push(node);\n });\n if (imageList.length === 0) {\n return node;\n }\n\n const imageResolver = opts.imageResolver;\n invariant(imageResolver, \"options.imageResolver is not defined.\");\n\n const imageDatas = await Promise.all(\n imageList.map(({ url }) => imageResolver(url))\n );\n images = imageList.reduce((acc, img, i) => {\n acc[img.url] = imageDatas[i]!;\n return acc;\n }, {} as ImageDataMap);\n return node;\n };\n};\nexport default plugin;\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../src/src/utils.ts","../src/src/latex.ts","../src/src/transformer.ts","../src/src/plugin.ts"],"sourcesContent":["export const unreachable = (_: never): never => {\n throw new Error(\"unreachable\");\n};\n\nexport function invariant(cond: any, message: string): asserts cond {\n if (!cond) throw new Error(message);\n}\n","import * as docx from \"docx\";\nimport { parseMath } from \"@unified-latex/unified-latex-util-parse\";\nimport type * as latex from \"@unified-latex/unified-latex-types\";\nimport { unreachable } from \"./utils\";\n\nconst hasSquareBrackets = (\n arg: latex.Argument | undefined\n): arg is latex.Argument => {\n return !!arg && arg.openMark === \"[\" && arg.closeMark === \"]\";\n};\nconst hasCurlyBrackets = (\n arg: latex.Argument | undefined\n): arg is latex.Argument => {\n return !!arg && arg.openMark === \"{\" && arg.closeMark === \"}\";\n};\n\nconst mapString = (s: string): docx.MathRun => new docx.MathRun(s);\n\nconst mapMacro = (\n n: latex.Macro,\n runs: docx.MathRun[]\n): docx.MathRun | false => {\n switch (n.content) {\n case \"#\":\n return mapString(\"#\");\n case \"$\":\n return mapString(\"$\");\n case \"%\":\n return mapString(\"%\");\n case \"&\":\n return mapString(\"&\");\n case \"textasciitilde\":\n return mapString(\"~\");\n case \"textasciicircum\":\n return mapString(\"^\");\n case \"textbackslash\":\n return mapString(\"∖\");\n case \"{\":\n return mapString(\"{\");\n case \"}\":\n return mapString(\"}\");\n case \"textbar\":\n return mapString(\"|\");\n case \"textless\":\n return mapString(\"<\");\n case \"textgreater\":\n return mapString(\">\");\n case \"neq\":\n return mapString(\"≠\");\n case \"sim\":\n return mapString(\"∼\");\n case \"simeq\":\n return mapString(\"≃\");\n case \"approx\":\n return mapString(\"≈\");\n case \"fallingdotseq\":\n return mapString(\"≒\");\n case \"risingdotseq\":\n return mapString(\"≓\");\n case \"equiv\":\n return mapString(\"≡\");\n case \"geq\":\n return mapString(\"≥\");\n case \"geqq\":\n return mapString(\"≧\");\n case \"leq\":\n return mapString(\"≤\");\n case \"leqq\":\n return mapString(\"≦\");\n case \"gg\":\n return mapString(\"≫\");\n case \"ll\":\n return mapString(\"≪\");\n case \"times\":\n return mapString(\"×\");\n case \"div\":\n return mapString(\"÷\");\n case \"pm\":\n return mapString(\"±\");\n case \"mp\":\n return mapString(\"∓\");\n case \"oplus\":\n return mapString(\"⊕\");\n case \"ominus\":\n return mapString(\"⊖\");\n case \"otimes\":\n return mapString(\"⊗\");\n case \"oslash\":\n return mapString(\"⊘\");\n case \"circ\":\n return mapString(\"∘\");\n case \"cdot\":\n return mapString(\"⋅\");\n case \"bullet\":\n return mapString(\"∙\");\n case \"ltimes\":\n return mapString(\"⋉\");\n case \"rtimes\":\n return mapString(\"⋊\");\n case \"in\":\n return mapString(\"∈\");\n case \"ni\":\n return mapString(\"∋\");\n case \"notin\":\n return mapString(\"∉\");\n case \"subset\":\n return mapString(\"⊂\");\n case \"supset\":\n return mapString(\"⊃\");\n case \"subseteq\":\n return mapString(\"⊆\");\n case \"supseteq\":\n return mapString(\"⊇\");\n case \"nsubseteq\":\n return mapString(\"⊈\");\n case \"nsupseteq\":\n return mapString(\"⊉\");\n case \"subsetneq\":\n return mapString(\"⊊\");\n case \"supsetneq\":\n return mapString(\"⊋\");\n case \"cap\":\n return mapString(\"∩\");\n case \"cup\":\n return mapString(\"∪\");\n case \"emptyset\":\n return mapString(\"∅\");\n case \"infty\":\n return mapString(\"∞\");\n case \"partial\":\n return mapString(\"∂\");\n case \"aleph\":\n return mapString(\"ℵ\");\n case \"hbar\":\n return mapString(\"ℏ\");\n case \"wp\":\n return mapString(\"℘\");\n case \"Re\":\n return mapString(\"ℜ\");\n case \"Im\":\n return mapString(\"ℑ\");\n case \"alpha\":\n return mapString(\"α\");\n case \"beta\":\n return mapString(\"β\");\n case \"gamma\":\n return mapString(\"γ\");\n case \"delta\":\n return mapString(\"δ\");\n case \"epsilon\":\n return mapString(\"ϵ\");\n case \"zeta\":\n return mapString(\"ζ\");\n case \"eta\":\n return mapString(\"η\");\n case \"theta\":\n return mapString(\"θ\");\n case \"iota\":\n return mapString(\"ι\");\n case \"kappa\":\n return mapString(\"κ\");\n case \"lambda\":\n return mapString(\"λ\");\n case \"eta\":\n return mapString(\"η\");\n case \"mu\":\n return mapString(\"μ\");\n case \"nu\":\n return mapString(\"ν\");\n case \"xi\":\n return mapString(\"ξ\");\n case \"pi\":\n return mapString(\"π\");\n case \"rho\":\n return mapString(\"ρ\");\n case \"sigma\":\n return mapString(\"σ\");\n case \"tau\":\n return mapString(\"τ\");\n case \"upsilon\":\n return mapString(\"υ\");\n case \"phi\":\n return mapString(\"ϕ\");\n case \"chi\":\n return mapString(\"χ\");\n case \"psi\":\n return mapString(\"ψ\");\n case \"omega\":\n return mapString(\"ω\");\n case \"varepsilon\":\n return mapString(\"ε\");\n case \"vartheta\":\n return mapString(\"ϑ\");\n case \"varrho\":\n return mapString(\"ϱ\");\n case \"varsigma\":\n return mapString(\"ς\");\n case \"varphi\":\n return mapString(\"φ\");\n case \"Gamma\":\n return mapString(\"Γ\");\n case \"Delta\":\n return mapString(\"Δ\");\n case \"Theta\":\n return mapString(\"Θ\");\n case \"Lambda\":\n return mapString(\"Λ\");\n case \"Xi\":\n return mapString(\"Ξ\");\n case \"Pi\":\n return mapString(\"Π\");\n case \"Sigma\":\n return mapString(\"Σ\");\n case \"Upsilon\":\n return mapString(\"Υ\");\n case \"Phi\":\n return mapString(\"Φ\");\n case \"Psi\":\n return mapString(\"Ψ\");\n case \"Omega\":\n return mapString(\"Ω\");\n case \"newline\":\n case \"\\\\\":\n // line break\n return false;\n case \"^\": {\n const prev = runs.pop();\n if (!prev) break;\n return new docx.MathSuperScript({\n children: [prev],\n superScript: mapGroup(n.args?.[0]?.content ?? []),\n });\n }\n case \"_\": {\n const prev = runs.pop();\n if (!prev) break;\n return new docx.MathSubScript({\n children: [prev],\n subScript: mapGroup(n.args?.[0]?.content ?? []),\n });\n }\n case \"hat\":\n // TODO: implement\n break;\n case \"widehat\":\n // TODO: implement\n break;\n case \"sum\": {\n // TODO: support superscript and subscript\n return new docx.MathSum({\n children: [],\n });\n }\n case \"int\":\n return mapString(\"∫\");\n case \"frac\":\n case \"tfrac\":\n case \"dfrac\": {\n const args = n.args ?? [];\n if (\n args.length === 2 &&\n hasCurlyBrackets(args[0]) &&\n hasCurlyBrackets(args[1])\n ) {\n return new docx.MathFraction({\n numerator: mapGroup(args[0].content),\n denominator: mapGroup(args[1].content),\n });\n }\n break;\n }\n case \"sqrt\": {\n const args = n.args ?? [];\n if (args.length === 1 && hasCurlyBrackets(args[0])) {\n return new docx.MathRadical({\n children: mapGroup(args[0].content),\n });\n }\n if (\n args.length === 2 &&\n hasSquareBrackets(args[0]) &&\n hasCurlyBrackets(args[1])\n ) {\n return new docx.MathRadical({\n children: mapGroup(args[1].content),\n degree: mapGroup(args[0].content),\n });\n }\n break;\n }\n default:\n break;\n }\n return mapString(n.content);\n};\n\nconst mapGroup = (nodes: latex.Node[]): docx.MathRun[] => {\n const group: docx.MathRun[] = [];\n for (const c of nodes) {\n group.push(...(mapNode(c, group) || []));\n }\n return group;\n};\n\nconst mapNode = (\n n: latex.Node,\n runs: docx.MathRun[]\n): docx.MathRun[] | false => {\n switch (n.type) {\n case \"root\":\n break;\n case \"string\":\n return [mapString(n.content)];\n case \"whitespace\":\n break;\n case \"parbreak\":\n break;\n case \"comment\":\n break;\n case \"macro\":\n const run = mapMacro(n, runs);\n if (!run) {\n // line break\n return false;\n } else {\n return [run];\n }\n case \"environment\":\n case \"mathenv\":\n break;\n case \"verbatim\":\n break;\n case \"inlinemath\":\n break;\n case \"displaymath\":\n break;\n case \"group\":\n return mapGroup(n.content);\n case \"verb\":\n break;\n default:\n unreachable(n);\n }\n\n return [];\n};\n\nexport const parseLatex = (value: string): docx.MathRun[][] => {\n const parsed = parseMath(value);\n const paragraphs: docx.MathRun[][] = [[]];\n let runs: docx.MathRun[] = paragraphs[0]!;\n for (const n of parsed) {\n const res = mapNode(n, runs);\n if (!res) {\n // line break\n paragraphs.push((runs = []));\n } else {\n runs.push(...res);\n }\n }\n return paragraphs;\n};\n","import * as docx from \"docx\";\nimport { convertInchesToTwip, Packer } from \"docx\";\nimport type { IPropertiesOptions } from \"docx/build/file/core-properties\";\nimport type * as mdast from \"./models/mdast\";\nimport { parseLatex } from \"./latex\";\nimport { invariant, unreachable } from \"./utils\";\n\nconst ORDERED_LIST_REF = \"ordered\";\nconst INDENT = 0.5;\nconst DEFAULT_NUMBERINGS: docx.ILevelsOptions[] = [\n {\n level: 0,\n format: docx.LevelFormat.DECIMAL,\n text: \"%1.\",\n alignment: docx.AlignmentType.START,\n },\n {\n level: 1,\n format: docx.LevelFormat.DECIMAL,\n text: \"%2.\",\n alignment: docx.AlignmentType.START,\n style: {\n paragraph: {\n indent: { start: convertInchesToTwip(INDENT * 1) },\n },\n },\n },\n {\n level: 2,\n format: docx.LevelFormat.DECIMAL,\n text: \"%3.\",\n alignment: docx.AlignmentType.START,\n style: {\n paragraph: {\n indent: { start: convertInchesToTwip(INDENT * 2) },\n },\n },\n },\n {\n level: 3,\n format: docx.LevelFormat.DECIMAL,\n text: \"%4.\",\n alignment: docx.AlignmentType.START,\n style: {\n paragraph: {\n indent: { start: convertInchesToTwip(INDENT * 3) },\n },\n },\n },\n {\n level: 4,\n format: docx.LevelFormat.DECIMAL,\n text: \"%5.\",\n alignment: docx.AlignmentType.START,\n style: {\n paragraph: {\n indent: { start: convertInchesToTwip(INDENT * 4) },\n },\n },\n },\n {\n level: 5,\n format: docx.LevelFormat.DECIMAL,\n text: \"%6.\",\n alignment: docx.AlignmentType.START,\n style: {\n paragraph: {\n indent: { start: convertInchesToTwip(INDENT * 5) },\n },\n },\n },\n];\n\nexport type ImageDataMap = { [url: string]: ImageData };\n\nexport type ImageData = {\n image: docx.IImageOptions[\"data\"];\n width: number;\n height: number;\n};\n\nexport type ImageResolver = (url: string) => Promise<ImageData> | ImageData;\n\ntype Decoration = Readonly<\n {\n [key in (mdast.Emphasis | mdast.Strong | mdast.Delete)[\"type\"]]?: true;\n }\n>;\n\ntype ListInfo = Readonly<{\n level: number;\n ordered: boolean;\n}>;\n\ntype Context = Readonly<{\n deco: Decoration;\n images: ImageDataMap;\n list?: ListInfo;\n}>;\n\nexport type Opts = {\n output?: \"buffer\" | \"blob\";\n imageResolver?: ImageResolver;\n} & Pick<\n IPropertiesOptions,\n | \"title\"\n | \"subject\"\n | \"creator\"\n | \"keywords\"\n | \"description\"\n | \"lastModifiedBy\"\n | \"revision\"\n | \"styles\"\n | \"background\"\n>;\n\ntype DocxChild = docx.Paragraph | docx.Table | docx.TableOfContents;\ntype DocxContent = DocxChild | docx.ParagraphChild;\n\nexport const mdastToDocx = (\n node: mdast.Root,\n {\n output = \"buffer\",\n title,\n subject,\n creator,\n keywords,\n description,\n lastModifiedBy,\n revision,\n styles,\n background,\n }: Opts,\n images: ImageDataMap\n): Promise<any> => {\n const nodes = convertNodes(node.children, {\n deco: {},\n images,\n }) as DocxChild[];\n const doc = new docx.Document({\n title,\n subject,\n creator,\n keywords,\n description,\n lastModifiedBy,\n revision,\n styles,\n background,\n sections: [{ children: nodes }],\n numbering: {\n config: [\n {\n reference: ORDERED_LIST_REF,\n levels: DEFAULT_NUMBERINGS,\n },\n ],\n },\n });\n\n switch (output) {\n case \"buffer\":\n return Packer.toBuffer(doc);\n case \"blob\":\n return Packer.toBlob(doc);\n }\n};\n\nconst convertNodes = (nodes: mdast.Content[], ctx: Context): DocxContent[] => {\n const results: DocxContent[] = [];\n\n for (const node of nodes) {\n switch (node.type) {\n case \"paragraph\":\n results.push(buildParagraph(node, ctx));\n break;\n case \"heading\":\n results.push(buildHeading(node, ctx));\n break;\n case \"thematicBreak\":\n results.push(buildThematicBreak(node));\n break;\n case \"blockquote\":\n results.push(...buildBlockquote(node, ctx));\n break;\n case \"list\":\n results.push(...buildList(node, ctx));\n break;\n case \"listItem\":\n invariant(false, \"unreachable\");\n case \"table\":\n results.push(buildTable(node, ctx));\n break;\n case \"tableRow\":\n invariant(false, \"unreachable\");\n case \"tableCell\":\n invariant(false, \"unreachable\");\n case \"html\":\n results.push(buildHtml(node));\n break;\n case \"code\":\n results.push(buildCode(node));\n break;\n case \"yaml\":\n // FIXME: unimplemented\n break;\n case \"toml\":\n // FIXME: unimplemented\n break;\n case \"definition\":\n // FIXME: unimplemented\n break;\n case \"footnoteDefinition\":\n // FIXME: unimplemented\n break;\n case \"text\":\n results.push(buildText(node.value, ctx.deco));\n break;\n case \"emphasis\":\n case \"strong\":\n case \"delete\": {\n const { type, children } = node;\n results.push(\n ...convertNodes(children, {\n ...ctx,\n deco: { ...ctx.deco, [type]: true },\n })\n );\n break;\n }\n case \"inlineCode\":\n // FIXME: transform to text for now\n results.push(buildText(node.value, ctx.deco));\n break;\n case \"break\":\n results.push(buildBreak(node));\n break;\n case \"link\":\n results.push(buildLink(node, ctx));\n break;\n case \"image\":\n results.push(buildImage(node, ctx.images));\n break;\n case \"linkReference\":\n // FIXME: unimplemented\n break;\n case \"imageReference\":\n // FIXME: unimplemented\n break;\n case \"footnote\":\n results.push(buildFootnote(node, ctx));\n break;\n case \"footnoteReference\":\n // FIXME: unimplemented\n break;\n case \"math\":\n results.push(...buildMath(node));\n break;\n case \"inlineMath\":\n results.push(buildInlineMath(node));\n break;\n default:\n unreachable(node);\n break;\n }\n }\n return results;\n};\n\nconst buildParagraph = ({ children }: mdast.Paragraph, ctx: Context) => {\n const list = ctx.list;\n return new docx.Paragraph({\n children: convertNodes(children, ctx),\n ...(list &&\n (list.ordered\n ? {\n numbering: {\n reference: ORDERED_LIST_REF,\n level: list.level,\n },\n }\n : {\n bullet: {\n level: list.level,\n },\n })),\n });\n};\n\nconst buildHeading = ({ children, depth }: mdast.Heading, ctx: Context) => {\n let heading: docx.HeadingLevel;\n switch (depth) {\n case 1:\n heading = docx.HeadingLevel.TITLE;\n break;\n case 2:\n heading = docx.HeadingLevel.HEADING_1;\n break;\n case 3:\n heading = docx.HeadingLevel.HEADING_2;\n break;\n case 4:\n heading = docx.HeadingLevel.HEADING_3;\n break;\n case 5:\n heading = docx.HeadingLevel.HEADING_4;\n break;\n case 6:\n heading = docx.HeadingLevel.HEADING_5;\n break;\n }\n return new docx.Paragraph({\n heading,\n children: convertNodes(children, ctx),\n });\n};\n\nconst buildThematicBreak = (_: mdast.ThematicBreak) => {\n return new docx.Paragraph({\n thematicBreak: true,\n });\n};\n\nconst buildBlockquote = ({ children }: mdast.Blockquote, ctx: Context) => {\n // FIXME: do nothing for now\n return convertNodes(children, ctx);\n};\n\nconst buildList = (\n { children, ordered, start: _start, spread: _spread }: mdast.List,\n ctx: Context\n) => {\n const list: ListInfo = {\n level: ctx.list ? ctx.list.level + 1 : 0,\n ordered: !!ordered,\n };\n return children.reduce((acc, item) => {\n acc.push(\n ...buildListItem(item, {\n ...ctx,\n list,\n })\n );\n return acc;\n }, [] as DocxContent[]);\n};\n\nconst buildListItem = (\n { children, checked: _checked, spread: _spread }: mdast.ListItem,\n ctx: Context\n) => {\n return convertNodes(children, ctx);\n};\n\nconst buildTable = ({ children, align }: mdast.Table, ctx: Context) => {\n const cellAligns: docx.AlignmentType[] | undefined = align?.map((a) => {\n switch (a) {\n case \"left\":\n return docx.AlignmentType.LEFT;\n case \"right\":\n return docx.AlignmentType.RIGHT;\n case \"center\":\n return docx.AlignmentType.CENTER;\n default:\n return docx.AlignmentType.LEFT;\n }\n });\n\n return new docx.Table({\n rows: children.map((r) => {\n return buildTableRow(r, ctx, cellAligns);\n }),\n });\n};\n\nconst buildTableRow = (\n { children }: mdast.TableRow,\n ctx: Context,\n cellAligns: docx.AlignmentType[] | undefined\n) => {\n return new docx.TableRow({\n children: children.map((c, i) => {\n return buildTableCell(c, ctx, cellAligns?.[i]);\n }),\n });\n};\n\nconst buildTableCell = (\n { children }: mdast.TableCell,\n ctx: Context,\n align: docx.AlignmentType | undefined\n) => {\n return new docx.TableCell({\n children: [\n new docx.Paragraph({\n alignment: align,\n children: convertNodes(children, ctx),\n }),\n ],\n });\n};\n\nconst buildHtml = ({ value }: mdast.HTML) => {\n // FIXME: transform to text for now\n return new docx.Paragraph({\n children: [buildText(value, {})],\n });\n};\n\nconst buildCode = ({ value, lang: _lang, meta: _meta }: mdast.Code) => {\n // FIXME: transform to text for now\n return new docx.Paragraph({\n children: [buildText(value, {})],\n });\n};\n\nconst buildMath = ({ value }: mdast.Math) => {\n return parseLatex(value).map(\n (runs) =>\n new docx.Paragraph({\n children: [\n new docx.Math({\n children: runs,\n }),\n ],\n })\n );\n};\n\nconst buildInlineMath = ({ value }: mdast.InlineMath) => {\n return new docx.Math({\n children: parseLatex(value).flatMap((runs) => runs),\n });\n};\n\nconst buildText = (text: string, deco: Decoration) => {\n return new docx.TextRun({\n text,\n bold: deco.strong,\n italics: deco.emphasis,\n strike: deco.delete,\n });\n};\n\nconst buildBreak = (_: mdast.Break) => {\n return new docx.TextRun({ text: \"\", break: 1 });\n};\n\nconst buildLink = (\n { children, url, title: _title }: mdast.Link,\n ctx: Context\n) => {\n return new docx.ExternalHyperlink({\n link: url,\n children: convertNodes(children, ctx),\n });\n};\n\nconst buildImage = (\n { url, title: _title, alt: _alt }: mdast.Image,\n images: ImageDataMap\n) => {\n const img = images[url];\n invariant(img, `Fetch image was failed: ${url}`);\n\n const { image, width, height } = img;\n return new docx.ImageRun({\n data: image,\n transformation: {\n width,\n height,\n },\n });\n};\n\nconst buildFootnote = ({ children }: mdast.Footnote, ctx: Context) => {\n // FIXME: transform to paragraph for now\n return new docx.Paragraph({\n children: convertNodes(children, ctx),\n });\n};\n","import type { Plugin } from \"unified\";\nimport type * as mdast from \"mdast\";\nimport { visit } from \"unist-util-visit\";\nimport { mdastToDocx, Opts, ImageDataMap } from \"./transformer\";\nimport { invariant } from \"./utils\";\n\nexport type Options = Opts;\n\nconst plugin: Plugin<[Options?]> = function (opts = {}) {\n let images: ImageDataMap = {};\n\n this.Compiler = (node) => {\n return mdastToDocx(node as any, opts, images);\n };\n\n return async (node) => {\n const imageList: mdast.Image[] = [];\n visit(node, \"image\", (node) => {\n imageList.push(node);\n });\n if (imageList.length === 0) {\n return node;\n }\n\n const imageResolver = opts.imageResolver;\n invariant(imageResolver, \"options.imageResolver is not defined.\");\n\n const imageDatas = await Promise.all(\n imageList.map(({ url }) => imageResolver(url))\n );\n images = imageList.reduce((acc, img, i) => {\n acc[img.url] = imageDatas[i]!;\n return acc;\n }, {} as ImageDataMap);\n return node;\n };\n};\nexport default plugin;\n"],"names":[],"mappings":"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"}
|
package/lib/transformer.d.ts
CHANGED
|
@@ -14,4 +14,4 @@ export declare type Opts = {
|
|
|
14
14
|
output?: "buffer" | "blob";
|
|
15
15
|
imageResolver?: ImageResolver;
|
|
16
16
|
} & Pick<IPropertiesOptions, "title" | "subject" | "creator" | "keywords" | "description" | "lastModifiedBy" | "revision" | "styles" | "background">;
|
|
17
|
-
export declare
|
|
17
|
+
export declare const mdastToDocx: (node: mdast.Root, { output, title, subject, creator, keywords, description, lastModifiedBy, revision, styles, background, }: Opts, images: ImageDataMap) => Promise<any>;
|