remark-docx 0.0.7 → 0.1.0
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 +32 -3
- package/lib/index.js +443 -190
- package/lib/index.js.map +1 -0
- package/lib/index.mjs +443 -190
- package/lib/index.mjs.map +1 -0
- package/lib/latex.d.ts +2 -0
- package/lib/transformer.d.ts +2 -2
- package/lib/utils.d.ts +2 -0
- package/package.json +29 -24
package/lib/index.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
+
var tslib = require('tslib');
|
|
3
4
|
var unistUtilVisit = require('unist-util-visit');
|
|
4
5
|
var docx = require('docx');
|
|
6
|
+
var unifiedLatexUtilParse = require('@unified-latex/unified-latex-util-parse');
|
|
5
7
|
|
|
6
8
|
function _interopNamespace(e) {
|
|
7
9
|
if (e && e.__esModule) return e;
|
|
@@ -23,73 +25,358 @@ function _interopNamespace(e) {
|
|
|
23
25
|
|
|
24
26
|
var docx__namespace = /*#__PURE__*/_interopNamespace(docx);
|
|
25
27
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
|
33
|
-
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
|
34
|
-
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
|
35
|
-
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
|
36
|
-
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
37
|
-
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
38
|
-
PERFORMANCE OF THIS SOFTWARE.
|
|
39
|
-
***************************************************************************** */
|
|
40
|
-
|
|
41
|
-
var __assign = function() {
|
|
42
|
-
__assign = Object.assign || function __assign(t) {
|
|
43
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
44
|
-
s = arguments[i];
|
|
45
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
|
|
46
|
-
}
|
|
47
|
-
return t;
|
|
48
|
-
};
|
|
49
|
-
return __assign.apply(this, arguments);
|
|
50
|
-
};
|
|
51
|
-
|
|
52
|
-
function __awaiter(thisArg, _arguments, P, generator) {
|
|
53
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
54
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
55
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
56
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
57
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
58
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
59
|
-
});
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
function __generator(thisArg, body) {
|
|
63
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
64
|
-
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
65
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
66
|
-
function step(op) {
|
|
67
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
68
|
-
while (_) try {
|
|
69
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
70
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
71
|
-
switch (op[0]) {
|
|
72
|
-
case 0: case 1: t = op; break;
|
|
73
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
74
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
75
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
76
|
-
default:
|
|
77
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
78
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
79
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
80
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
81
|
-
if (t[2]) _.ops.pop();
|
|
82
|
-
_.trys.pop(); continue;
|
|
83
|
-
}
|
|
84
|
-
op = body.call(thisArg, _);
|
|
85
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
86
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
87
|
-
}
|
|
28
|
+
const unreachable = (_) => {
|
|
29
|
+
throw new Error("unreachable");
|
|
30
|
+
};
|
|
31
|
+
function invariant(cond, message) {
|
|
32
|
+
if (!cond)
|
|
33
|
+
throw new Error(message);
|
|
88
34
|
}
|
|
89
35
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
36
|
+
const hasSquareBracket = (arg) => {
|
|
37
|
+
return !!arg && arg.openMark === "[" && arg.closeMark === "]";
|
|
38
|
+
};
|
|
39
|
+
const hasCurlyBracket = (arg) => {
|
|
40
|
+
return !!arg && arg.openMark === "{" && arg.closeMark === "}";
|
|
41
|
+
};
|
|
42
|
+
const mapString = (s) => new docx__namespace.MathRun(s);
|
|
43
|
+
const mapMacro = (n, runs) => {
|
|
44
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
45
|
+
switch (n.content) {
|
|
46
|
+
case "#":
|
|
47
|
+
return mapString("#");
|
|
48
|
+
case "$":
|
|
49
|
+
return mapString("$");
|
|
50
|
+
case "%":
|
|
51
|
+
return mapString("%");
|
|
52
|
+
case "&":
|
|
53
|
+
return mapString("&");
|
|
54
|
+
case "textasciitilde":
|
|
55
|
+
return mapString("~");
|
|
56
|
+
case "textasciicircum":
|
|
57
|
+
return mapString("^");
|
|
58
|
+
case "textbackslash":
|
|
59
|
+
return mapString("∖");
|
|
60
|
+
case "{":
|
|
61
|
+
return mapString("{");
|
|
62
|
+
case "}":
|
|
63
|
+
return mapString("}");
|
|
64
|
+
case "textbar":
|
|
65
|
+
return mapString("|");
|
|
66
|
+
case "textless":
|
|
67
|
+
return mapString("<");
|
|
68
|
+
case "textgreater":
|
|
69
|
+
return mapString(">");
|
|
70
|
+
case "neq":
|
|
71
|
+
return mapString("≠");
|
|
72
|
+
case "sim":
|
|
73
|
+
return mapString("∼");
|
|
74
|
+
case "simeq":
|
|
75
|
+
return mapString("≃");
|
|
76
|
+
case "approx":
|
|
77
|
+
return mapString("≈");
|
|
78
|
+
case "fallingdotseq":
|
|
79
|
+
return mapString("≒");
|
|
80
|
+
case "risingdotseq":
|
|
81
|
+
return mapString("≓");
|
|
82
|
+
case "equiv":
|
|
83
|
+
return mapString("≡");
|
|
84
|
+
case "geq":
|
|
85
|
+
return mapString("≥");
|
|
86
|
+
case "geqq":
|
|
87
|
+
return mapString("≧");
|
|
88
|
+
case "leq":
|
|
89
|
+
return mapString("≤");
|
|
90
|
+
case "leqq":
|
|
91
|
+
return mapString("≦");
|
|
92
|
+
case "gg":
|
|
93
|
+
return mapString("≫");
|
|
94
|
+
case "ll":
|
|
95
|
+
return mapString("≪");
|
|
96
|
+
case "times":
|
|
97
|
+
return mapString("×");
|
|
98
|
+
case "div":
|
|
99
|
+
return mapString("÷");
|
|
100
|
+
case "pm":
|
|
101
|
+
return mapString("±");
|
|
102
|
+
case "mp":
|
|
103
|
+
return mapString("∓");
|
|
104
|
+
case "oplus":
|
|
105
|
+
return mapString("⊕");
|
|
106
|
+
case "ominus":
|
|
107
|
+
return mapString("⊖");
|
|
108
|
+
case "otimes":
|
|
109
|
+
return mapString("⊗");
|
|
110
|
+
case "oslash":
|
|
111
|
+
return mapString("⊘");
|
|
112
|
+
case "circ":
|
|
113
|
+
return mapString("∘");
|
|
114
|
+
case "cdot":
|
|
115
|
+
return mapString("⋅");
|
|
116
|
+
case "bullet":
|
|
117
|
+
return mapString("∙");
|
|
118
|
+
case "ltimes":
|
|
119
|
+
return mapString("⋉");
|
|
120
|
+
case "rtimes":
|
|
121
|
+
return mapString("⋊");
|
|
122
|
+
case "in":
|
|
123
|
+
return mapString("∈");
|
|
124
|
+
case "ni":
|
|
125
|
+
return mapString("∋");
|
|
126
|
+
case "notin":
|
|
127
|
+
return mapString("∉");
|
|
128
|
+
case "subset":
|
|
129
|
+
return mapString("⊂");
|
|
130
|
+
case "supset":
|
|
131
|
+
return mapString("⊃");
|
|
132
|
+
case "subseteq":
|
|
133
|
+
return mapString("⊆");
|
|
134
|
+
case "supseteq":
|
|
135
|
+
return mapString("⊇");
|
|
136
|
+
case "nsubseteq":
|
|
137
|
+
return mapString("⊈");
|
|
138
|
+
case "nsupseteq":
|
|
139
|
+
return mapString("⊉");
|
|
140
|
+
case "subsetneq":
|
|
141
|
+
return mapString("⊊");
|
|
142
|
+
case "supsetneq":
|
|
143
|
+
return mapString("⊋");
|
|
144
|
+
case "cap":
|
|
145
|
+
return mapString("∩");
|
|
146
|
+
case "cup":
|
|
147
|
+
return mapString("∪");
|
|
148
|
+
case "emptyset":
|
|
149
|
+
return mapString("∅");
|
|
150
|
+
case "infty":
|
|
151
|
+
return mapString("∞");
|
|
152
|
+
case "partial":
|
|
153
|
+
return mapString("∂");
|
|
154
|
+
case "aleph":
|
|
155
|
+
return mapString("ℵ");
|
|
156
|
+
case "hbar":
|
|
157
|
+
return mapString("ℏ");
|
|
158
|
+
case "wp":
|
|
159
|
+
return mapString("℘");
|
|
160
|
+
case "Re":
|
|
161
|
+
return mapString("ℜ");
|
|
162
|
+
case "Im":
|
|
163
|
+
return mapString("ℑ");
|
|
164
|
+
case "alpha":
|
|
165
|
+
return mapString("α");
|
|
166
|
+
case "beta":
|
|
167
|
+
return mapString("β");
|
|
168
|
+
case "gamma":
|
|
169
|
+
return mapString("γ");
|
|
170
|
+
case "delta":
|
|
171
|
+
return mapString("δ");
|
|
172
|
+
case "epsilon":
|
|
173
|
+
return mapString("ϵ");
|
|
174
|
+
case "zeta":
|
|
175
|
+
return mapString("ζ");
|
|
176
|
+
case "eta":
|
|
177
|
+
return mapString("η");
|
|
178
|
+
case "theta":
|
|
179
|
+
return mapString("θ");
|
|
180
|
+
case "iota":
|
|
181
|
+
return mapString("ι");
|
|
182
|
+
case "kappa":
|
|
183
|
+
return mapString("κ");
|
|
184
|
+
case "lambda":
|
|
185
|
+
return mapString("λ");
|
|
186
|
+
case "eta":
|
|
187
|
+
return mapString("η");
|
|
188
|
+
case "mu":
|
|
189
|
+
return mapString("μ");
|
|
190
|
+
case "nu":
|
|
191
|
+
return mapString("ν");
|
|
192
|
+
case "xi":
|
|
193
|
+
return mapString("ξ");
|
|
194
|
+
case "pi":
|
|
195
|
+
return mapString("π");
|
|
196
|
+
case "rho":
|
|
197
|
+
return mapString("ρ");
|
|
198
|
+
case "sigma":
|
|
199
|
+
return mapString("σ");
|
|
200
|
+
case "tau":
|
|
201
|
+
return mapString("τ");
|
|
202
|
+
case "upsilon":
|
|
203
|
+
return mapString("υ");
|
|
204
|
+
case "phi":
|
|
205
|
+
return mapString("ϕ");
|
|
206
|
+
case "chi":
|
|
207
|
+
return mapString("χ");
|
|
208
|
+
case "psi":
|
|
209
|
+
return mapString("ψ");
|
|
210
|
+
case "omega":
|
|
211
|
+
return mapString("ω");
|
|
212
|
+
case "varepsilon":
|
|
213
|
+
return mapString("ε");
|
|
214
|
+
case "vartheta":
|
|
215
|
+
return mapString("ϑ");
|
|
216
|
+
case "varrho":
|
|
217
|
+
return mapString("ϱ");
|
|
218
|
+
case "varsigma":
|
|
219
|
+
return mapString("ς");
|
|
220
|
+
case "varphi":
|
|
221
|
+
return mapString("φ");
|
|
222
|
+
case "Gamma":
|
|
223
|
+
return mapString("Γ");
|
|
224
|
+
case "Delta":
|
|
225
|
+
return mapString("Δ");
|
|
226
|
+
case "Theta":
|
|
227
|
+
return mapString("Θ");
|
|
228
|
+
case "Lambda":
|
|
229
|
+
return mapString("Λ");
|
|
230
|
+
case "Xi":
|
|
231
|
+
return mapString("Ξ");
|
|
232
|
+
case "Pi":
|
|
233
|
+
return mapString("Π");
|
|
234
|
+
case "Sigma":
|
|
235
|
+
return mapString("Σ");
|
|
236
|
+
case "Upsilon":
|
|
237
|
+
return mapString("Υ");
|
|
238
|
+
case "Phi":
|
|
239
|
+
return mapString("Φ");
|
|
240
|
+
case "Psi":
|
|
241
|
+
return mapString("Ψ");
|
|
242
|
+
case "Omega":
|
|
243
|
+
return mapString("Ω");
|
|
244
|
+
case "newline":
|
|
245
|
+
case "\\":
|
|
246
|
+
// line break
|
|
247
|
+
return false;
|
|
248
|
+
case "^": {
|
|
249
|
+
const prev = runs.pop();
|
|
250
|
+
if (!prev)
|
|
251
|
+
break;
|
|
252
|
+
return new docx__namespace.MathSuperScript({
|
|
253
|
+
children: [prev],
|
|
254
|
+
superScript: mapGroup((_c = (_b = (_a = n.args) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.content) !== null && _c !== void 0 ? _c : []),
|
|
255
|
+
});
|
|
256
|
+
}
|
|
257
|
+
case "_": {
|
|
258
|
+
const prev = runs.pop();
|
|
259
|
+
if (!prev)
|
|
260
|
+
break;
|
|
261
|
+
return new docx__namespace.MathSubScript({
|
|
262
|
+
children: [prev],
|
|
263
|
+
subScript: mapGroup((_f = (_e = (_d = n.args) === null || _d === void 0 ? void 0 : _d[0]) === null || _e === void 0 ? void 0 : _e.content) !== null && _f !== void 0 ? _f : []),
|
|
264
|
+
});
|
|
265
|
+
}
|
|
266
|
+
case "hat":
|
|
267
|
+
// TODO: implement
|
|
268
|
+
break;
|
|
269
|
+
case "widehat":
|
|
270
|
+
// TODO: implement
|
|
271
|
+
break;
|
|
272
|
+
case "sum": {
|
|
273
|
+
// TODO: support superscript and subscript
|
|
274
|
+
return new docx__namespace.MathSum({
|
|
275
|
+
children: [],
|
|
276
|
+
});
|
|
277
|
+
}
|
|
278
|
+
case "int":
|
|
279
|
+
return mapString("∫");
|
|
280
|
+
case "frac":
|
|
281
|
+
case "tfrac":
|
|
282
|
+
case "dfrac": {
|
|
283
|
+
const args = (_g = n.args) !== null && _g !== void 0 ? _g : [];
|
|
284
|
+
if (args.length === 2 &&
|
|
285
|
+
hasCurlyBracket(args[0]) &&
|
|
286
|
+
hasCurlyBracket(args[1])) {
|
|
287
|
+
return new docx__namespace.MathFraction({
|
|
288
|
+
numerator: mapGroup(args[0].content),
|
|
289
|
+
denominator: mapGroup(args[1].content),
|
|
290
|
+
});
|
|
291
|
+
}
|
|
292
|
+
break;
|
|
293
|
+
}
|
|
294
|
+
case "sqrt": {
|
|
295
|
+
const args = (_h = n.args) !== null && _h !== void 0 ? _h : [];
|
|
296
|
+
if (args.length === 1 && hasCurlyBracket(args[0])) {
|
|
297
|
+
return new docx__namespace.MathRadical({
|
|
298
|
+
children: mapGroup(args[0].content),
|
|
299
|
+
});
|
|
300
|
+
}
|
|
301
|
+
if (args.length === 2 &&
|
|
302
|
+
hasSquareBracket(args[0]) &&
|
|
303
|
+
hasCurlyBracket(args[1])) {
|
|
304
|
+
return new docx__namespace.MathRadical({
|
|
305
|
+
children: mapGroup(args[1].content),
|
|
306
|
+
degree: mapGroup(args[0].content),
|
|
307
|
+
});
|
|
308
|
+
}
|
|
309
|
+
break;
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
return mapString(n.content);
|
|
313
|
+
};
|
|
314
|
+
const mapGroup = (nodes) => {
|
|
315
|
+
const group = [];
|
|
316
|
+
for (const c of nodes) {
|
|
317
|
+
group.push(...(mapNode(c, group) || []));
|
|
318
|
+
}
|
|
319
|
+
return group;
|
|
320
|
+
};
|
|
321
|
+
const mapNode = (n, runs) => {
|
|
322
|
+
switch (n.type) {
|
|
323
|
+
case "root":
|
|
324
|
+
break;
|
|
325
|
+
case "string":
|
|
326
|
+
return [mapString(n.content)];
|
|
327
|
+
case "whitespace":
|
|
328
|
+
break;
|
|
329
|
+
case "parbreak":
|
|
330
|
+
break;
|
|
331
|
+
case "comment":
|
|
332
|
+
break;
|
|
333
|
+
case "macro":
|
|
334
|
+
const run = mapMacro(n, runs);
|
|
335
|
+
if (!run) {
|
|
336
|
+
// line break
|
|
337
|
+
return false;
|
|
338
|
+
}
|
|
339
|
+
else {
|
|
340
|
+
return [run];
|
|
341
|
+
}
|
|
342
|
+
case "environment":
|
|
343
|
+
case "mathenv":
|
|
344
|
+
break;
|
|
345
|
+
case "verbatim":
|
|
346
|
+
break;
|
|
347
|
+
case "inlinemath":
|
|
348
|
+
break;
|
|
349
|
+
case "displaymath":
|
|
350
|
+
break;
|
|
351
|
+
case "group":
|
|
352
|
+
return mapGroup(n.content);
|
|
353
|
+
case "verb":
|
|
354
|
+
break;
|
|
355
|
+
default:
|
|
356
|
+
unreachable();
|
|
357
|
+
}
|
|
358
|
+
return [];
|
|
359
|
+
};
|
|
360
|
+
const parseLatex = (value) => {
|
|
361
|
+
const parsed = unifiedLatexUtilParse.parseMath(value);
|
|
362
|
+
const paragraphs = [[]];
|
|
363
|
+
let runs = paragraphs[0];
|
|
364
|
+
for (const n of parsed) {
|
|
365
|
+
const res = mapNode(n, runs);
|
|
366
|
+
if (!res) {
|
|
367
|
+
// line break
|
|
368
|
+
paragraphs.push((runs = []));
|
|
369
|
+
}
|
|
370
|
+
else {
|
|
371
|
+
runs.push(...res);
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
return paragraphs;
|
|
375
|
+
};
|
|
376
|
+
|
|
377
|
+
const ORDERED_LIST_REF = "ordered";
|
|
378
|
+
const INDENT = 0.5;
|
|
379
|
+
const DEFAULT_NUMBERINGS = [
|
|
93
380
|
{
|
|
94
381
|
level: 0,
|
|
95
382
|
format: docx__namespace.LevelFormat.DECIMAL,
|
|
@@ -152,25 +439,21 @@ var DEFAULT_NUMBERINGS = [
|
|
|
152
439
|
},
|
|
153
440
|
},
|
|
154
441
|
];
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
};
|
|
158
|
-
function mdastToDocx(node, _a, images) {
|
|
159
|
-
var output = _a.output, title = _a.title, subject = _a.subject, creator = _a.creator, keywords = _a.keywords, description = _a.description, lastModifiedBy = _a.lastModifiedBy, revision = _a.revision, styles = _a.styles, background = _a.background;
|
|
160
|
-
var nodes = convertNodes(node.children, {
|
|
442
|
+
function mdastToDocx(node, { output, title, subject, creator, keywords, description, lastModifiedBy, revision, styles, background, }, images) {
|
|
443
|
+
const nodes = convertNodes(node.children, {
|
|
161
444
|
deco: {},
|
|
162
|
-
images
|
|
445
|
+
images,
|
|
163
446
|
});
|
|
164
|
-
|
|
165
|
-
title
|
|
166
|
-
subject
|
|
167
|
-
creator
|
|
168
|
-
keywords
|
|
169
|
-
description
|
|
170
|
-
lastModifiedBy
|
|
171
|
-
revision
|
|
172
|
-
styles
|
|
173
|
-
background
|
|
447
|
+
const doc = new docx__namespace.Document({
|
|
448
|
+
title,
|
|
449
|
+
subject,
|
|
450
|
+
creator,
|
|
451
|
+
keywords,
|
|
452
|
+
description,
|
|
453
|
+
lastModifiedBy,
|
|
454
|
+
revision,
|
|
455
|
+
styles,
|
|
456
|
+
background,
|
|
174
457
|
sections: [{ children: nodes }],
|
|
175
458
|
numbering: {
|
|
176
459
|
config: [
|
|
@@ -189,10 +472,8 @@ function mdastToDocx(node, _a, images) {
|
|
|
189
472
|
}
|
|
190
473
|
}
|
|
191
474
|
function convertNodes(nodes, ctx) {
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
for (var _i = 0, nodes_1 = nodes; _i < nodes_1.length; _i++) {
|
|
195
|
-
var node = nodes_1[_i];
|
|
475
|
+
const results = [];
|
|
476
|
+
for (const node of nodes) {
|
|
196
477
|
switch (node.type) {
|
|
197
478
|
case "paragraph":
|
|
198
479
|
results.push(buildParagraph(node, ctx));
|
|
@@ -201,26 +482,23 @@ function convertNodes(nodes, ctx) {
|
|
|
201
482
|
results.push(buildHeading(node, ctx));
|
|
202
483
|
break;
|
|
203
484
|
case "thematicBreak":
|
|
204
|
-
results.push(buildThematicBreak(
|
|
485
|
+
results.push(buildThematicBreak());
|
|
205
486
|
break;
|
|
206
487
|
case "blockquote":
|
|
207
|
-
results.push
|
|
488
|
+
results.push(...buildBlockquote(node, ctx));
|
|
208
489
|
break;
|
|
209
490
|
case "list":
|
|
210
|
-
results.push
|
|
491
|
+
results.push(...buildList(node, ctx));
|
|
211
492
|
break;
|
|
212
493
|
case "listItem":
|
|
213
|
-
|
|
214
|
-
break;
|
|
494
|
+
invariant(false, "unreachable");
|
|
215
495
|
case "table":
|
|
216
496
|
results.push(buildTable(node, ctx));
|
|
217
497
|
break;
|
|
218
498
|
case "tableRow":
|
|
219
|
-
|
|
220
|
-
break;
|
|
499
|
+
invariant(false, "unreachable");
|
|
221
500
|
case "tableCell":
|
|
222
|
-
|
|
223
|
-
break;
|
|
501
|
+
invariant(false, "unreachable");
|
|
224
502
|
case "html":
|
|
225
503
|
results.push(buildHtml(node));
|
|
226
504
|
break;
|
|
@@ -245,8 +523,8 @@ function convertNodes(nodes, ctx) {
|
|
|
245
523
|
case "emphasis":
|
|
246
524
|
case "strong":
|
|
247
525
|
case "delete": {
|
|
248
|
-
|
|
249
|
-
results.push
|
|
526
|
+
const { type, children } = node;
|
|
527
|
+
results.push(...convertNodes(children, Object.assign(Object.assign({}, ctx), { deco: Object.assign(Object.assign({}, ctx.deco), { [type]: true }) })));
|
|
250
528
|
break;
|
|
251
529
|
}
|
|
252
530
|
case "inlineCode":
|
|
@@ -254,7 +532,7 @@ function convertNodes(nodes, ctx) {
|
|
|
254
532
|
results.push(buildText(node.value, ctx.deco));
|
|
255
533
|
break;
|
|
256
534
|
case "break":
|
|
257
|
-
results.push(buildBreak(
|
|
535
|
+
results.push(buildBreak());
|
|
258
536
|
break;
|
|
259
537
|
case "link":
|
|
260
538
|
results.push(buildLink(node, ctx));
|
|
@@ -275,19 +553,21 @@ function convertNodes(nodes, ctx) {
|
|
|
275
553
|
// FIXME: unimplemented
|
|
276
554
|
break;
|
|
277
555
|
case "math":
|
|
278
|
-
results.push(buildMath(node));
|
|
556
|
+
results.push(...buildMath(node));
|
|
279
557
|
break;
|
|
280
558
|
case "inlineMath":
|
|
281
559
|
results.push(buildInlineMath(node));
|
|
282
560
|
break;
|
|
561
|
+
default:
|
|
562
|
+
unreachable();
|
|
563
|
+
break;
|
|
283
564
|
}
|
|
284
565
|
}
|
|
285
566
|
return results;
|
|
286
567
|
}
|
|
287
|
-
function buildParagraph(
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
return new docx__namespace.Paragraph(__assign({ children: convertNodes(children, ctx) }, (list &&
|
|
568
|
+
function buildParagraph({ children }, ctx) {
|
|
569
|
+
const list = ctx.list;
|
|
570
|
+
return new docx__namespace.Paragraph(Object.assign({ children: convertNodes(children, ctx) }, (list &&
|
|
291
571
|
(list.ordered
|
|
292
572
|
? {
|
|
293
573
|
numbering: {
|
|
@@ -301,9 +581,8 @@ function buildParagraph(_a, ctx) {
|
|
|
301
581
|
},
|
|
302
582
|
}))));
|
|
303
583
|
}
|
|
304
|
-
function buildHeading(
|
|
305
|
-
|
|
306
|
-
var heading;
|
|
584
|
+
function buildHeading({ children, depth }, ctx) {
|
|
585
|
+
let heading;
|
|
307
586
|
switch (depth) {
|
|
308
587
|
case 1:
|
|
309
588
|
heading = docx__namespace.HeadingLevel.TITLE;
|
|
@@ -325,39 +604,34 @@ function buildHeading(_a, ctx) {
|
|
|
325
604
|
break;
|
|
326
605
|
}
|
|
327
606
|
return new docx__namespace.Paragraph({
|
|
328
|
-
heading
|
|
607
|
+
heading,
|
|
329
608
|
children: convertNodes(children, ctx),
|
|
330
609
|
});
|
|
331
610
|
}
|
|
332
|
-
function buildThematicBreak(
|
|
333
|
-
_a.type;
|
|
611
|
+
function buildThematicBreak(_) {
|
|
334
612
|
return new docx__namespace.Paragraph({
|
|
335
613
|
thematicBreak: true,
|
|
336
614
|
});
|
|
337
615
|
}
|
|
338
|
-
function buildBlockquote(
|
|
339
|
-
_a.type; var children = _a.children;
|
|
616
|
+
function buildBlockquote({ children }, ctx) {
|
|
340
617
|
// FIXME: do nothing for now
|
|
341
618
|
return convertNodes(children, ctx);
|
|
342
619
|
}
|
|
343
|
-
function buildList(
|
|
344
|
-
|
|
345
|
-
var list = {
|
|
620
|
+
function buildList({ children, ordered, start: _start, spread: _spread }, ctx) {
|
|
621
|
+
const list = {
|
|
346
622
|
level: ctx.list ? ctx.list.level + 1 : 0,
|
|
347
623
|
ordered: !!ordered,
|
|
348
624
|
};
|
|
349
|
-
return children.reduce(
|
|
350
|
-
acc.push
|
|
625
|
+
return children.reduce((acc, item) => {
|
|
626
|
+
acc.push(...buildListItem(item, Object.assign(Object.assign({}, ctx), { list })));
|
|
351
627
|
return acc;
|
|
352
628
|
}, []);
|
|
353
629
|
}
|
|
354
|
-
function buildListItem(
|
|
355
|
-
_a.type; var children = _a.children; _a.checked; _a.spread;
|
|
630
|
+
function buildListItem({ children, checked: _checked, spread: _spread }, ctx) {
|
|
356
631
|
return convertNodes(children, ctx);
|
|
357
632
|
}
|
|
358
|
-
function buildTable(
|
|
359
|
-
|
|
360
|
-
var cellAligns = align === null || align === void 0 ? void 0 : align.map(function (a) {
|
|
633
|
+
function buildTable({ children, align }, ctx) {
|
|
634
|
+
const cellAligns = align === null || align === void 0 ? void 0 : align.map((a) => {
|
|
361
635
|
switch (a) {
|
|
362
636
|
case "left":
|
|
363
637
|
return docx__namespace.AlignmentType.LEFT;
|
|
@@ -370,21 +644,19 @@ function buildTable(_a, ctx) {
|
|
|
370
644
|
}
|
|
371
645
|
});
|
|
372
646
|
return new docx__namespace.Table({
|
|
373
|
-
rows: children.map(
|
|
647
|
+
rows: children.map((r) => {
|
|
374
648
|
return buildTableRow(r, ctx, cellAligns);
|
|
375
649
|
}),
|
|
376
650
|
});
|
|
377
651
|
}
|
|
378
|
-
function buildTableRow(
|
|
379
|
-
_a.type; var children = _a.children;
|
|
652
|
+
function buildTableRow({ children }, ctx, cellAligns) {
|
|
380
653
|
return new docx__namespace.TableRow({
|
|
381
|
-
children: children.map(
|
|
654
|
+
children: children.map((c, i) => {
|
|
382
655
|
return buildTableCell(c, ctx, cellAligns === null || cellAligns === void 0 ? void 0 : cellAligns[i]);
|
|
383
656
|
}),
|
|
384
657
|
});
|
|
385
658
|
}
|
|
386
|
-
function buildTableCell(
|
|
387
|
-
_a.type; var children = _a.children;
|
|
659
|
+
function buildTableCell({ children }, ctx, align) {
|
|
388
660
|
return new docx__namespace.TableCell({
|
|
389
661
|
children: [
|
|
390
662
|
new docx__namespace.Paragraph({
|
|
@@ -394,110 +666,91 @@ function buildTableCell(_a, ctx, align) {
|
|
|
394
666
|
],
|
|
395
667
|
});
|
|
396
668
|
}
|
|
397
|
-
function buildHtml(
|
|
398
|
-
_a.type; var value = _a.value;
|
|
669
|
+
function buildHtml({ value }) {
|
|
399
670
|
// FIXME: transform to text for now
|
|
400
671
|
return new docx__namespace.Paragraph({
|
|
401
672
|
children: [buildText(value, {})],
|
|
402
673
|
});
|
|
403
674
|
}
|
|
404
|
-
function buildCode(
|
|
405
|
-
_a.type; var value = _a.value; _a.lang; _a.meta;
|
|
675
|
+
function buildCode({ value, lang: _lang, meta: _meta }) {
|
|
406
676
|
// FIXME: transform to text for now
|
|
407
677
|
return new docx__namespace.Paragraph({
|
|
408
678
|
children: [buildText(value, {})],
|
|
409
679
|
});
|
|
410
680
|
}
|
|
411
|
-
function buildMath(
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
681
|
+
function buildMath({ value }) {
|
|
682
|
+
return parseLatex(value).map((runs) => new docx__namespace.Paragraph({
|
|
683
|
+
children: [
|
|
684
|
+
new docx__namespace.Math({
|
|
685
|
+
children: runs,
|
|
686
|
+
}),
|
|
687
|
+
],
|
|
688
|
+
}));
|
|
417
689
|
}
|
|
418
|
-
function buildInlineMath(
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
690
|
+
function buildInlineMath({ value }) {
|
|
691
|
+
return new docx__namespace.Math({
|
|
692
|
+
children: parseLatex(value).flatMap((runs) => runs),
|
|
693
|
+
});
|
|
422
694
|
}
|
|
423
695
|
function buildText(text, deco) {
|
|
424
696
|
return new docx__namespace.TextRun({
|
|
425
|
-
text
|
|
697
|
+
text,
|
|
426
698
|
bold: deco.strong,
|
|
427
699
|
italics: deco.emphasis,
|
|
428
700
|
strike: deco.delete,
|
|
429
701
|
});
|
|
430
702
|
}
|
|
431
|
-
function buildBreak(
|
|
432
|
-
_a.type;
|
|
703
|
+
function buildBreak(_) {
|
|
433
704
|
return new docx__namespace.TextRun({ text: "", break: 1 });
|
|
434
705
|
}
|
|
435
|
-
function buildLink(
|
|
436
|
-
_a.type; var children = _a.children, url = _a.url; _a.title;
|
|
706
|
+
function buildLink({ children, url, title: _title }, ctx) {
|
|
437
707
|
return new docx__namespace.ExternalHyperlink({
|
|
438
708
|
link: url,
|
|
439
709
|
children: convertNodes(children, ctx),
|
|
440
710
|
});
|
|
441
711
|
}
|
|
442
|
-
function buildImage(
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
}
|
|
447
|
-
var _b = images[url], image = _b.image, width = _b.width, height = _b.height;
|
|
712
|
+
function buildImage({ url, title: _title, alt: _alt }, images) {
|
|
713
|
+
const img = images[url];
|
|
714
|
+
invariant(img, `Fetch image was failed: ${url}`);
|
|
715
|
+
const { image, width, height } = img;
|
|
448
716
|
return new docx__namespace.ImageRun({
|
|
449
717
|
data: image,
|
|
450
718
|
transformation: {
|
|
451
|
-
width
|
|
452
|
-
height
|
|
719
|
+
width,
|
|
720
|
+
height,
|
|
453
721
|
},
|
|
454
722
|
});
|
|
455
723
|
}
|
|
456
|
-
function buildFootnote(
|
|
457
|
-
_a.type; var children = _a.children;
|
|
724
|
+
function buildFootnote({ children }, ctx) {
|
|
458
725
|
// FIXME: transform to paragraph for now
|
|
459
726
|
return new docx__namespace.Paragraph({
|
|
460
727
|
children: convertNodes(children, ctx),
|
|
461
728
|
});
|
|
462
729
|
}
|
|
463
730
|
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
var images = {};
|
|
468
|
-
this.Compiler = function (node) {
|
|
731
|
+
const plugin = function (opts = {}) {
|
|
732
|
+
let images = {};
|
|
733
|
+
this.Compiler = (node) => {
|
|
469
734
|
return mdastToDocx(node, opts, images);
|
|
470
735
|
};
|
|
471
|
-
return
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
case 0:
|
|
476
|
-
imageList = [];
|
|
477
|
-
unistUtilVisit.visit(node, "image", function (node) {
|
|
478
|
-
imageList.push(node);
|
|
479
|
-
});
|
|
480
|
-
if (imageList.length === 0) {
|
|
481
|
-
return [2 /*return*/, node];
|
|
482
|
-
}
|
|
483
|
-
imageResolver = opts.imageResolver;
|
|
484
|
-
if (!imageResolver) {
|
|
485
|
-
throw new Error("options.imageResolver is not defined.");
|
|
486
|
-
}
|
|
487
|
-
return [4 /*yield*/, Promise.all(imageList.map(function (_a) {
|
|
488
|
-
var url = _a.url;
|
|
489
|
-
return imageResolver(url);
|
|
490
|
-
}))];
|
|
491
|
-
case 1:
|
|
492
|
-
imageDatas = _a.sent();
|
|
493
|
-
images = imageList.reduce(function (acc, img, i) {
|
|
494
|
-
acc[img.url] = imageDatas[i];
|
|
495
|
-
return acc;
|
|
496
|
-
}, {});
|
|
497
|
-
return [2 /*return*/, node];
|
|
498
|
-
}
|
|
736
|
+
return (node) => tslib.__awaiter(this, void 0, void 0, function* () {
|
|
737
|
+
const imageList = [];
|
|
738
|
+
unistUtilVisit.visit(node, "image", (node) => {
|
|
739
|
+
imageList.push(node);
|
|
499
740
|
});
|
|
500
|
-
|
|
741
|
+
if (imageList.length === 0) {
|
|
742
|
+
return node;
|
|
743
|
+
}
|
|
744
|
+
const imageResolver = opts.imageResolver;
|
|
745
|
+
invariant(imageResolver, "options.imageResolver is not defined.");
|
|
746
|
+
const imageDatas = yield Promise.all(imageList.map(({ url }) => imageResolver(url)));
|
|
747
|
+
images = imageList.reduce((acc, img, i) => {
|
|
748
|
+
acc[img.url] = imageDatas[i];
|
|
749
|
+
return acc;
|
|
750
|
+
}, {});
|
|
751
|
+
return node;
|
|
752
|
+
});
|
|
501
753
|
};
|
|
502
754
|
|
|
503
755
|
module.exports = plugin;
|
|
756
|
+
//# sourceMappingURL=index.js.map
|