docrev 0.10.2 → 0.11.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/CHANGELOG.md +13 -0
- package/README.md +2 -0
- package/dist/lib/anchor-match.d.ts +3 -1
- package/dist/lib/anchor-match.d.ts.map +1 -1
- package/dist/lib/anchor-match.js +5 -7
- package/dist/lib/anchor-match.js.map +1 -1
- package/dist/lib/annotations.d.ts +0 -6
- package/dist/lib/annotations.d.ts.map +1 -1
- package/dist/lib/annotations.js +26 -8
- package/dist/lib/annotations.js.map +1 -1
- package/dist/lib/build.d.ts +52 -0
- package/dist/lib/build.d.ts.map +1 -1
- package/dist/lib/build.js +135 -6
- package/dist/lib/build.js.map +1 -1
- package/dist/lib/commands/build.d.ts.map +1 -1
- package/dist/lib/commands/build.js +39 -12
- package/dist/lib/commands/build.js.map +1 -1
- package/dist/lib/commands/doi.d.ts.map +1 -1
- package/dist/lib/commands/doi.js +14 -2
- package/dist/lib/commands/doi.js.map +1 -1
- package/dist/lib/commands/sync.d.ts.map +1 -1
- package/dist/lib/commands/sync.js +24 -11
- package/dist/lib/commands/sync.js.map +1 -1
- package/dist/lib/comment-realign.d.ts +12 -21
- package/dist/lib/comment-realign.d.ts.map +1 -1
- package/dist/lib/comment-realign.js +40 -348
- package/dist/lib/comment-realign.js.map +1 -1
- package/dist/lib/dependencies.d.ts +10 -0
- package/dist/lib/dependencies.d.ts.map +1 -1
- package/dist/lib/dependencies.js +41 -9
- package/dist/lib/dependencies.js.map +1 -1
- package/dist/lib/doi.d.ts.map +1 -1
- package/dist/lib/doi.js +68 -80
- package/dist/lib/doi.js.map +1 -1
- package/dist/lib/errors.d.ts.map +1 -1
- package/dist/lib/errors.js +3 -1
- package/dist/lib/errors.js.map +1 -1
- package/dist/lib/import.d.ts +7 -4
- package/dist/lib/import.d.ts.map +1 -1
- package/dist/lib/import.js +58 -62
- package/dist/lib/import.js.map +1 -1
- package/dist/lib/ooxml.d.ts +207 -0
- package/dist/lib/ooxml.d.ts.map +1 -0
- package/dist/lib/ooxml.js +634 -0
- package/dist/lib/ooxml.js.map +1 -0
- package/dist/lib/rate-limiter.d.ts +8 -0
- package/dist/lib/rate-limiter.d.ts.map +1 -1
- package/dist/lib/rate-limiter.js +41 -4
- package/dist/lib/rate-limiter.js.map +1 -1
- package/dist/lib/trackchanges.d.ts +41 -25
- package/dist/lib/trackchanges.d.ts.map +1 -1
- package/dist/lib/trackchanges.js +90 -151
- package/dist/lib/trackchanges.js.map +1 -1
- package/dist/lib/types.d.ts +9 -8
- package/dist/lib/types.d.ts.map +1 -1
- package/dist/lib/word-extraction.d.ts.map +1 -1
- package/dist/lib/word-extraction.js +48 -307
- package/dist/lib/word-extraction.js.map +1 -1
- package/dist/lib/word.d.ts.map +1 -1
- package/dist/lib/word.js +80 -175
- package/dist/lib/word.js.map +1 -1
- package/dist/lib/wordcomments.d.ts.map +1 -1
- package/dist/lib/wordcomments.js +53 -92
- package/dist/lib/wordcomments.js.map +1 -1
- package/lib/anchor-match.ts +6 -7
- package/lib/annotations.ts +28 -8
- package/lib/build.ts +196 -6
- package/lib/commands/build.ts +42 -12
- package/lib/commands/doi.ts +17 -1
- package/lib/commands/sync.ts +26 -13
- package/lib/comment-realign.ts +46 -464
- package/lib/dependencies.ts +43 -9
- package/lib/doi.ts +76 -94
- package/lib/errors.ts +5 -1
- package/lib/import.ts +65 -70
- package/lib/ooxml.ts +768 -0
- package/lib/rate-limiter.ts +37 -4
- package/lib/trackchanges.ts +102 -183
- package/lib/types.ts +9 -13
- package/lib/word-extraction.ts +49 -330
- package/lib/word.ts +86 -203
- package/lib/wordcomments.ts +53 -104
- package/package.json +137 -137
- package/skill/REFERENCE.md +14 -3
- package/skill/SKILL.md +12 -5
- package/types/index.d.ts +16 -10
package/dist/lib/word.js
CHANGED
|
@@ -4,9 +4,7 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import * as fs from 'fs';
|
|
6
6
|
import AdmZip from 'adm-zip';
|
|
7
|
-
import {
|
|
8
|
-
import { promisify } from 'util';
|
|
9
|
-
const parseXml = promisify(parseString);
|
|
7
|
+
import { openDocx, readPartText, buildCommentAnchorModel, extractComments, walkBody, } from './ooxml.js';
|
|
10
8
|
// =============================================================================
|
|
11
9
|
// Constants
|
|
12
10
|
// =============================================================================
|
|
@@ -31,44 +29,10 @@ export async function extractWordComments(docxPath) {
|
|
|
31
29
|
if (!fs.existsSync(docxPath)) {
|
|
32
30
|
throw new Error(`File not found: ${docxPath}`);
|
|
33
31
|
}
|
|
34
|
-
const zip =
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
}
|
|
39
|
-
const commentsXml = zip.readAsText(commentsEntry);
|
|
40
|
-
const parsed = await parseXml(commentsXml);
|
|
41
|
-
if (!parsed?.['w:comments'] || !parsed['w:comments']['w:comment']) {
|
|
42
|
-
return [];
|
|
43
|
-
}
|
|
44
|
-
const comments = [];
|
|
45
|
-
const rawComments = parsed['w:comments']['w:comment'];
|
|
46
|
-
for (const comment of rawComments) {
|
|
47
|
-
const id = comment.$?.['w:id'];
|
|
48
|
-
const author = comment.$?.['w:author'] || 'Unknown';
|
|
49
|
-
const date = comment.$?.['w:date'];
|
|
50
|
-
// Extract text from all paragraphs in comment
|
|
51
|
-
let text = '';
|
|
52
|
-
const paragraphs = comment['w:p'] || [];
|
|
53
|
-
for (const para of paragraphs) {
|
|
54
|
-
const runs = para['w:r'] || [];
|
|
55
|
-
for (const run of runs) {
|
|
56
|
-
const texts = run['w:t'] || [];
|
|
57
|
-
for (const t of texts) {
|
|
58
|
-
text += typeof t === 'string' ? t : (t._ || '');
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
if (id && text.trim()) {
|
|
63
|
-
comments.push({
|
|
64
|
-
id,
|
|
65
|
-
author,
|
|
66
|
-
date,
|
|
67
|
-
text: text.trim(),
|
|
68
|
-
});
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
return comments;
|
|
32
|
+
const zip = openDocx(docxPath);
|
|
33
|
+
return extractComments(zip)
|
|
34
|
+
.filter((c) => c.id && c.text)
|
|
35
|
+
.map((c) => ({ id: c.id, author: c.author, date: c.date, text: c.text }));
|
|
72
36
|
}
|
|
73
37
|
/**
|
|
74
38
|
* Extract comment anchors (where comments are attached) from document.xml
|
|
@@ -82,53 +46,16 @@ export async function extractCommentAnchors(docxPath) {
|
|
|
82
46
|
if (typeof docxPath !== 'string') {
|
|
83
47
|
throw new TypeError(`docxPath must be a string, got ${typeof docxPath}`);
|
|
84
48
|
}
|
|
85
|
-
const zip =
|
|
86
|
-
|
|
87
|
-
if (!documentEntry) {
|
|
49
|
+
const zip = openDocx(docxPath);
|
|
50
|
+
if (!zip.getEntry('word/document.xml')) {
|
|
88
51
|
throw new Error('Invalid docx: no document.xml');
|
|
89
52
|
}
|
|
90
|
-
const
|
|
53
|
+
const { fullDocText, comments } = buildCommentAnchorModel(zip);
|
|
91
54
|
const anchors = new Map();
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
let match;
|
|
97
|
-
const starts = new Map();
|
|
98
|
-
const ends = new Map();
|
|
99
|
-
while ((match = startPattern.exec(documentXml)) !== null) {
|
|
100
|
-
if (match[1]) {
|
|
101
|
-
starts.set(match[1], match.index);
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
while ((match = endPattern.exec(documentXml)) !== null) {
|
|
105
|
-
if (match[1]) {
|
|
106
|
-
ends.set(match[1], match.index);
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
// For each comment, extract the text between start and end
|
|
110
|
-
for (const [id, startPos] of starts) {
|
|
111
|
-
const endPos = ends.get(id);
|
|
112
|
-
if (!endPos)
|
|
113
|
-
continue;
|
|
114
|
-
const segment = documentXml.slice(startPos, endPos);
|
|
115
|
-
// Extract all text content from the segment
|
|
116
|
-
const textPattern = /<w:t[^>]*>([^<]*)<\/w:t>/g;
|
|
117
|
-
let text = '';
|
|
118
|
-
let textMatch;
|
|
119
|
-
while ((textMatch = textPattern.exec(segment)) !== null) {
|
|
120
|
-
text += textMatch[1] ?? '';
|
|
121
|
-
}
|
|
122
|
-
// Get surrounding context (text before the anchor)
|
|
123
|
-
const contextStart = Math.max(0, startPos - CONTEXT_BEFORE_SIZE);
|
|
124
|
-
const contextSegment = documentXml.slice(contextStart, startPos);
|
|
125
|
-
let context = '';
|
|
126
|
-
while ((textMatch = textPattern.exec(contextSegment)) !== null) {
|
|
127
|
-
context += textMatch[1] ?? '';
|
|
128
|
-
}
|
|
129
|
-
anchors.set(id, {
|
|
130
|
-
text: text.trim(),
|
|
131
|
-
context: context.slice(-ANCHOR_CONTEXT_SIZE),
|
|
55
|
+
for (const range of comments) {
|
|
56
|
+
anchors.set(range.id, {
|
|
57
|
+
text: range.anchor,
|
|
58
|
+
context: fullDocText.slice(Math.max(0, range.start - CONTEXT_BEFORE_SIZE), range.start).slice(-ANCHOR_CONTEXT_SIZE),
|
|
132
59
|
});
|
|
133
60
|
}
|
|
134
61
|
return anchors;
|
|
@@ -392,104 +319,82 @@ export async function extractPlainTextWithTrackChanges(docxPath) {
|
|
|
392
319
|
if (!fs.existsSync(docxPath)) {
|
|
393
320
|
throw new Error(`File not found: ${docxPath}`);
|
|
394
321
|
}
|
|
395
|
-
const zip =
|
|
396
|
-
const
|
|
397
|
-
if (
|
|
322
|
+
const zip = openDocx(docxPath);
|
|
323
|
+
const docXml = readPartText(zip, 'word/document.xml');
|
|
324
|
+
if (docXml === null) {
|
|
398
325
|
throw new Error('Invalid docx: no document.xml');
|
|
399
326
|
}
|
|
400
|
-
let xml = docEntry.getData().toString('utf8');
|
|
401
327
|
let insertions = 0;
|
|
402
328
|
let deletions = 0;
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
insertions++;
|
|
420
|
-
return `<w:r><w:t>${INS_S}${text}${INS_E}</w:t></w:r>`;
|
|
421
|
-
}
|
|
422
|
-
// Whitespace-only: preserve as plain text for spacing
|
|
423
|
-
if (text.length > 0) {
|
|
424
|
-
return `<w:r><w:t>${text}</w:t></w:r>`;
|
|
329
|
+
const paragraphs = [];
|
|
330
|
+
// One ordered walk drives everything: paragraph and heading boundaries,
|
|
331
|
+
// run text (entities already decoded, tabs/breaks rendered), and the
|
|
332
|
+
// track-change spans that become CriticMarkup. Field codes (w:instrText)
|
|
333
|
+
// never reach the text because the walker only reads w:t / w:delText.
|
|
334
|
+
let paraOut = '';
|
|
335
|
+
let headingLevel = 0;
|
|
336
|
+
let mode = 'normal';
|
|
337
|
+
let buffer = '';
|
|
338
|
+
const flushSpan = (open, close, isIns) => {
|
|
339
|
+
if (buffer.trim()) {
|
|
340
|
+
if (isIns)
|
|
341
|
+
insertions++;
|
|
342
|
+
else
|
|
343
|
+
deletions++;
|
|
344
|
+
paraOut += `${open}${buffer}${close}`;
|
|
425
345
|
}
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
// Whitespace-only deletions are kept as plain text to preserve spacing.
|
|
430
|
-
xml = xml.replace(/<w:del\b[^>]*>([\s\S]*?)<\/w:del>/g, (_match, content) => {
|
|
431
|
-
const texts = [];
|
|
432
|
-
const tPat = /<w:delText[^>]*>([^<]*)<\/w:delText>|<w:t[^>]*>([^<]*)<\/w:t>/g;
|
|
433
|
-
let m;
|
|
434
|
-
while ((m = tPat.exec(content)) !== null) {
|
|
435
|
-
texts.push(m[1] || m[2] || '');
|
|
346
|
+
else if (buffer.length > 0) {
|
|
347
|
+
// Whitespace-only edits are kept as plain text to preserve spacing.
|
|
348
|
+
paraOut += buffer;
|
|
436
349
|
}
|
|
437
|
-
|
|
350
|
+
buffer = '';
|
|
351
|
+
};
|
|
352
|
+
const endParagraph = () => {
|
|
353
|
+
let text = mergeAdjacentMarkers(paraOut);
|
|
354
|
+
text = text.replace(/ {2,}/g, ' ');
|
|
438
355
|
if (text.trim()) {
|
|
439
|
-
|
|
440
|
-
return `<w:r><w:t>${DEL_S}${text}${DEL_E}</w:t></w:r>`;
|
|
441
|
-
}
|
|
442
|
-
// Whitespace-only: preserve as plain text for spacing
|
|
443
|
-
if (text.length > 0) {
|
|
444
|
-
return `<w:r><w:t>${text}</w:t></w:r>`;
|
|
356
|
+
paragraphs.push(headingLevel >= 1 && headingLevel <= 6 ? '#'.repeat(headingLevel) + ' ' + text.trim() : text);
|
|
445
357
|
}
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
if (paraText.trim()) {
|
|
487
|
-
if (headingLevel > 0 && headingLevel <= 6) {
|
|
488
|
-
paragraphs.push('#'.repeat(headingLevel) + ' ' + paraText.trim());
|
|
489
|
-
}
|
|
490
|
-
else {
|
|
491
|
-
paragraphs.push(paraText);
|
|
492
|
-
}
|
|
358
|
+
paraOut = '';
|
|
359
|
+
headingLevel = 0;
|
|
360
|
+
mode = 'normal';
|
|
361
|
+
buffer = '';
|
|
362
|
+
};
|
|
363
|
+
for (const item of walkBody(docXml)) {
|
|
364
|
+
switch (item.kind) {
|
|
365
|
+
case 'paraStart':
|
|
366
|
+
paraOut = '';
|
|
367
|
+
headingLevel = item.level;
|
|
368
|
+
mode = 'normal';
|
|
369
|
+
buffer = '';
|
|
370
|
+
break;
|
|
371
|
+
case 'paraEnd':
|
|
372
|
+
endParagraph();
|
|
373
|
+
break;
|
|
374
|
+
case 'text':
|
|
375
|
+
if (mode === 'normal')
|
|
376
|
+
paraOut += item.text;
|
|
377
|
+
else
|
|
378
|
+
buffer += item.text;
|
|
379
|
+
break;
|
|
380
|
+
case 'insStart':
|
|
381
|
+
mode = 'ins';
|
|
382
|
+
buffer = '';
|
|
383
|
+
break;
|
|
384
|
+
case 'insEnd':
|
|
385
|
+
flushSpan('{++', '++}', true);
|
|
386
|
+
mode = 'normal';
|
|
387
|
+
break;
|
|
388
|
+
case 'delStart':
|
|
389
|
+
mode = 'del';
|
|
390
|
+
buffer = '';
|
|
391
|
+
break;
|
|
392
|
+
case 'delEnd':
|
|
393
|
+
flushSpan('{--', '--}', false);
|
|
394
|
+
mode = 'normal';
|
|
395
|
+
break;
|
|
396
|
+
default:
|
|
397
|
+
break;
|
|
493
398
|
}
|
|
494
399
|
}
|
|
495
400
|
return {
|
package/dist/lib/word.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"word.js","sourceRoot":"","sources":["../../lib/word.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"word.js","sourceRoot":"","sources":["../../lib/word.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wordcomments.d.ts","sourceRoot":"","sources":["../../lib/wordcomments.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;
|
|
1
|
+
{"version":3,"file":"wordcomments.d.ts","sourceRoot":"","sources":["../../lib/wordcomments.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAWH,UAAU,aAAa;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,eAAgB,SAAQ,aAAa;IAC7C,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED,UAAU,aAAa;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,eAAe,EAAE,CAAC;CAC7B;AAUD,UAAU,eAAe;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAUD;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa,CAiN1E;AA4ID;;GAEG;AACH,wBAAsB,uBAAuB,CAC3C,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,eAAe,EAAE,EAC3B,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,eAAe,CAAC,CAsW1B"}
|
package/dist/lib/wordcomments.js
CHANGED
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
import * as fs from 'fs';
|
|
13
13
|
import AdmZip from 'adm-zip';
|
|
14
14
|
import { escapeXml } from './utils.js';
|
|
15
|
+
import { indexTextRuns } from './ooxml.js';
|
|
15
16
|
const MARKER_START_PREFIX = '⟦CMS:';
|
|
16
17
|
const MARKER_END_PREFIX = '⟦CME:';
|
|
17
18
|
const MARKER_SUFFIX = '⟧';
|
|
@@ -383,7 +384,25 @@ export async function injectCommentsAtMarkers(docxPath, comments, outputPath) {
|
|
|
383
384
|
}
|
|
384
385
|
}
|
|
385
386
|
const injectedIds = new Set();
|
|
386
|
-
//
|
|
387
|
+
// Locate the enclosing run of each marker structurally, so placement never
|
|
388
|
+
// scans backwards for the nearest `<w:r`. Markers that pandoc duplicated
|
|
389
|
+
// into attributes (e.g. <wp:docPr descr="...">) are not inside a <w:t>, so
|
|
390
|
+
// they never appear in the index and cannot mislead the placement.
|
|
391
|
+
// See: https://github.com/gcol33/docrev/issues/4
|
|
392
|
+
//
|
|
393
|
+
// The index is rebuilt each iteration against the current document: two
|
|
394
|
+
// markers can share one run, so splicing one run invalidates offsets into
|
|
395
|
+
// it for the next marker.
|
|
396
|
+
const findMarkerSlot = (slots, marker) => {
|
|
397
|
+
for (const slot of slots) {
|
|
398
|
+
const rel = slot.content.indexOf(marker);
|
|
399
|
+
if (rel >= 0)
|
|
400
|
+
return { slot, rel };
|
|
401
|
+
}
|
|
402
|
+
return null;
|
|
403
|
+
};
|
|
404
|
+
// Process only parent comments (non-replies) for document ranges, from the
|
|
405
|
+
// last document position backwards.
|
|
387
406
|
const parentComments = commentsWithIds.filter(c => !c.isReply);
|
|
388
407
|
for (let i = parentComments.length - 1; i >= 0; i--) {
|
|
389
408
|
const comment = parentComments[i];
|
|
@@ -392,71 +411,17 @@ export async function injectCommentsAtMarkers(docxPath, comments, outputPath) {
|
|
|
392
411
|
const idx = comment.commentIdx;
|
|
393
412
|
const startMarker = `${MARKER_START_PREFIX}${idx}${MARKER_SUFFIX}`;
|
|
394
413
|
const endMarker = `${MARKER_END_PREFIX}${idx}${MARKER_SUFFIX}`;
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
// is inside an XML tag (last unbalanced '<' before position).
|
|
400
|
-
// See: https://github.com/gcol33/docrev/issues/4
|
|
401
|
-
function findInTextContent(haystack, needle, fromIdx = 0) {
|
|
402
|
-
let i = fromIdx;
|
|
403
|
-
while (true) {
|
|
404
|
-
const p = haystack.indexOf(needle, i);
|
|
405
|
-
if (p < 0)
|
|
406
|
-
return -1;
|
|
407
|
-
const lastLt = haystack.lastIndexOf('<', p);
|
|
408
|
-
const lastGt = haystack.lastIndexOf('>', p);
|
|
409
|
-
if (lastLt > lastGt) {
|
|
410
|
-
i = p + 1;
|
|
411
|
-
continue;
|
|
412
|
-
}
|
|
413
|
-
return p;
|
|
414
|
-
}
|
|
415
|
-
}
|
|
416
|
-
const startPos = findInTextContent(documentXml, startMarker);
|
|
417
|
-
const endPos = startPos === -1
|
|
418
|
-
? -1
|
|
419
|
-
: findInTextContent(documentXml, endMarker, startPos + startMarker.length);
|
|
420
|
-
if (startPos === -1 || endPos === -1)
|
|
421
|
-
continue;
|
|
422
|
-
// Find the runs containing each marker. Pandoc may split a single
|
|
423
|
-
// markdown anchor across multiple <w:r> blocks when it applies styling
|
|
424
|
-
// mid-anchor (smart-quote substitution, *italic*, `code`, **bold**).
|
|
425
|
-
// The same-run path (current happy path) collapses into the multi-run
|
|
426
|
-
// path when start and end runs coincide.
|
|
427
|
-
const startRunOpen = Math.max(documentXml.lastIndexOf('<w:r>', startPos), documentXml.lastIndexOf('<w:r ', startPos));
|
|
428
|
-
const startRunCloseIdx = documentXml.indexOf('</w:r>', startPos);
|
|
429
|
-
const endRunOpen = Math.max(documentXml.lastIndexOf('<w:r>', endPos), documentXml.lastIndexOf('<w:r ', endPos));
|
|
430
|
-
const endRunCloseIdx = documentXml.indexOf('</w:r>', endPos);
|
|
431
|
-
if (startRunOpen === -1 || startRunCloseIdx === -1 ||
|
|
432
|
-
endRunOpen === -1 || endRunCloseIdx === -1)
|
|
414
|
+
const slots = indexTextRuns(documentXml);
|
|
415
|
+
const startHit = findMarkerSlot(slots, startMarker);
|
|
416
|
+
const endHit = startHit ? findMarkerSlot(slots, endMarker) : null;
|
|
417
|
+
if (!startHit || !endHit)
|
|
433
418
|
continue;
|
|
434
|
-
const
|
|
435
|
-
const
|
|
436
|
-
const
|
|
437
|
-
const
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
// and so the post-anchor textAfter render keeps the end run's styling.
|
|
441
|
-
function dissectRun(runXml, marker) {
|
|
442
|
-
const rPrMatch = runXml.match(/<w:rPr>[\s\S]*?<\/w:rPr>/);
|
|
443
|
-
const tMatch = runXml.match(/<w:t[^>]*>([\s\S]*?)<\/w:t>/);
|
|
444
|
-
if (!tMatch)
|
|
445
|
-
return null;
|
|
446
|
-
const tOpenMatch = tMatch[0].match(/<w:t[^>]*>/);
|
|
447
|
-
if (!tOpenMatch)
|
|
448
|
-
return null;
|
|
449
|
-
const tContent = tMatch[1] ?? '';
|
|
450
|
-
const markerInT = tContent.indexOf(marker);
|
|
451
|
-
if (markerInT === -1)
|
|
452
|
-
return null;
|
|
453
|
-
return {
|
|
454
|
-
rPr: rPrMatch ? rPrMatch[0] : '',
|
|
455
|
-
tElement: tOpenMatch[0],
|
|
456
|
-
textBefore: tContent.slice(0, markerInT),
|
|
457
|
-
textAfter: tContent.slice(markerInT + marker.length),
|
|
458
|
-
};
|
|
459
|
-
}
|
|
419
|
+
const startSlot = startHit.slot;
|
|
420
|
+
const endSlot = endHit.slot;
|
|
421
|
+
const startRunOpen = startSlot.runOpenStart;
|
|
422
|
+
const startRunClose = startSlot.runCloseEnd;
|
|
423
|
+
const endRunOpen = endSlot.runOpenStart;
|
|
424
|
+
const endRunClose = endSlot.runCloseEnd;
|
|
460
425
|
let replacement = '';
|
|
461
426
|
const replies = commentsWithIds.filter(c => c.isReply && c.parentIdx === comment?.commentIdx);
|
|
462
427
|
const emitRangeStarts = () => {
|
|
@@ -475,18 +440,16 @@ export async function injectCommentsAtMarkers(docxPath, comments, outputPath) {
|
|
|
475
440
|
}
|
|
476
441
|
};
|
|
477
442
|
if (startRunOpen === endRunOpen) {
|
|
478
|
-
// Same-run path: both markers live inside one <w:t>.
|
|
479
|
-
const
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
const
|
|
483
|
-
const endInTextRel = startInfo.textAfter.indexOf(endMarker);
|
|
443
|
+
// Same-run path: both markers live inside one <w:t>.
|
|
444
|
+
const rPr = startSlot.rPr;
|
|
445
|
+
const tElement = startSlot.tOpenTag;
|
|
446
|
+
const afterStart = startSlot.content.slice(startHit.rel + startMarker.length);
|
|
447
|
+
const endInTextRel = afterStart.indexOf(endMarker);
|
|
484
448
|
if (endInTextRel === -1)
|
|
485
449
|
continue;
|
|
486
|
-
|
|
487
|
-
let
|
|
488
|
-
let
|
|
489
|
-
let textBefore = startInfo.textBefore;
|
|
450
|
+
let textBefore = startSlot.content.slice(0, startHit.rel);
|
|
451
|
+
let anchorText = afterStart.slice(0, endInTextRel);
|
|
452
|
+
let textAfter = afterStart.slice(endInTextRel + endMarker.length);
|
|
490
453
|
// Empty anchor: borrow the next word so the comment has something
|
|
491
454
|
// to anchor on. Then normalize the trailing double space.
|
|
492
455
|
if (!anchorText && textAfter) {
|
|
@@ -499,18 +462,16 @@ export async function injectCommentsAtMarkers(docxPath, comments, outputPath) {
|
|
|
499
462
|
if (!anchorText && textBefore.endsWith(' ') && textAfter.startsWith(' ')) {
|
|
500
463
|
textAfter = textAfter.slice(1);
|
|
501
464
|
}
|
|
502
|
-
// Suppress unused warning for pre-empty-anchor fullText var
|
|
503
|
-
void fullText;
|
|
504
465
|
if (textBefore) {
|
|
505
|
-
replacement += `<w:r>${
|
|
466
|
+
replacement += `<w:r>${rPr}${tElement}${textBefore}</w:t></w:r>`;
|
|
506
467
|
}
|
|
507
468
|
emitRangeStarts();
|
|
508
469
|
if (anchorText) {
|
|
509
|
-
replacement += `<w:r>${
|
|
470
|
+
replacement += `<w:r>${rPr}${tElement}${anchorText}</w:t></w:r>`;
|
|
510
471
|
}
|
|
511
472
|
emitRangeEnds();
|
|
512
473
|
if (textAfter) {
|
|
513
|
-
replacement += `<w:r>${
|
|
474
|
+
replacement += `<w:r>${rPr}${tElement}${textAfter}</w:t></w:r>`;
|
|
514
475
|
}
|
|
515
476
|
documentXml = documentXml.slice(0, startRunOpen) + replacement + documentXml.slice(startRunClose);
|
|
516
477
|
injectedIds.add(comment.id);
|
|
@@ -520,25 +481,25 @@ export async function injectCommentsAtMarkers(docxPath, comments, outputPath) {
|
|
|
520
481
|
// applied mid-anchor styling. Split the start run at the start marker,
|
|
521
482
|
// keep all middle runs verbatim (they carry the styled anchor portions),
|
|
522
483
|
// split the end run at the end marker.
|
|
523
|
-
const
|
|
524
|
-
const
|
|
525
|
-
|
|
526
|
-
|
|
484
|
+
const startTextBefore = startSlot.content.slice(0, startHit.rel);
|
|
485
|
+
const startTextAfter = startSlot.content.slice(startHit.rel + startMarker.length);
|
|
486
|
+
const endTextBefore = endSlot.content.slice(0, endHit.rel);
|
|
487
|
+
const endTextAfter = endSlot.content.slice(endHit.rel + endMarker.length);
|
|
527
488
|
const middle = documentXml.slice(startRunClose, endRunOpen);
|
|
528
|
-
if (
|
|
529
|
-
replacement += `<w:r>${
|
|
489
|
+
if (startTextBefore) {
|
|
490
|
+
replacement += `<w:r>${startSlot.rPr}${startSlot.tOpenTag}${startTextBefore}</w:t></w:r>`;
|
|
530
491
|
}
|
|
531
492
|
emitRangeStarts();
|
|
532
|
-
if (
|
|
533
|
-
replacement += `<w:r>${
|
|
493
|
+
if (startTextAfter) {
|
|
494
|
+
replacement += `<w:r>${startSlot.rPr}${startSlot.tOpenTag}${startTextAfter}</w:t></w:r>`;
|
|
534
495
|
}
|
|
535
496
|
replacement += middle;
|
|
536
|
-
if (
|
|
537
|
-
replacement += `<w:r>${
|
|
497
|
+
if (endTextBefore) {
|
|
498
|
+
replacement += `<w:r>${endSlot.rPr}${endSlot.tOpenTag}${endTextBefore}</w:t></w:r>`;
|
|
538
499
|
}
|
|
539
500
|
emitRangeEnds();
|
|
540
|
-
if (
|
|
541
|
-
replacement += `<w:r>${
|
|
501
|
+
if (endTextAfter) {
|
|
502
|
+
replacement += `<w:r>${endSlot.rPr}${endSlot.tOpenTag}${endTextAfter}</w:t></w:r>`;
|
|
542
503
|
}
|
|
543
504
|
documentXml = documentXml.slice(0, startRunOpen) + replacement + documentXml.slice(endRunClose);
|
|
544
505
|
injectedIds.add(comment.id);
|