fix(utils): assemble every Word line by one rule
Text with no paragraph ancestor was still scanned flat and emitted one node per line, which reintroduced the split-token bug this fixes, destroyed xml:space spacing, and moved that text out of document order. Every text node now belongs to exactly one line, assembled identically: concatenate its runs with no separator, strip once. A line is the closest paragraph ancestor -- paragraphs nest, so closest, never every ancestor -- else the nearest non-run container. Lines emit in document order. mc:AlternateContent carries a text box twice, under mc:Choice and mc:Fallback. The first Choice wins; when there is no Choice the Fallback is kept, so a document that has only a Fallback does not lose its text. w:tab and w:br inside a run yield \t and \n rather than fusing tokens. Tab stop definitions under w:pPr/w:tabs are not content. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
G
Gregory R. Warnes committed
8bb6862fa6c9c37cdb53b3cb2f0c7f30385acf4a
Parent: 6b6887c