postext 1.58.0 → 1.58.2
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/dist/__tests__/linearScans.test.js +21 -0
- package/dist/__tests__/linearScans.test.js.map +1 -1
- package/dist/__tests__/parse/sourceMap.test.d.ts +2 -0
- package/dist/__tests__/parse/sourceMap.test.d.ts.map +1 -0
- package/dist/__tests__/parse/sourceMap.test.js +130 -0
- package/dist/__tests__/parse/sourceMap.test.js.map +1 -0
- package/dist/__tests__/pipeline/spanHeadingMidPage.test.js +15 -0
- package/dist/__tests__/pipeline/spanHeadingMidPage.test.js.map +1 -1
- package/dist/comics/page.js +1 -1
- package/dist/parse/blockParser.js +4 -4
- package/dist/parse/blockParser.js.map +1 -1
- package/dist/parse/citations.d.ts +4 -2
- package/dist/parse/citations.d.ts.map +1 -1
- package/dist/parse/citations.js +4 -2
- package/dist/parse/citations.js.map +1 -1
- package/dist/parse/inlineMath.d.ts +7 -4
- package/dist/parse/inlineMath.d.ts.map +1 -1
- package/dist/parse/inlineMath.js +16 -7
- package/dist/parse/inlineMath.js.map +1 -1
- package/dist/parse/sourceMapping.d.ts.map +1 -1
- package/dist/parse/sourceMapping.js +62 -20
- package/dist/parse/sourceMapping.js.map +1 -1
- package/dist/pipeline/build.d.ts.map +1 -1
- package/dist/pipeline/build.js +9 -0
- package/dist/pipeline/build.js.map +1 -1
- package/dist/word/toDocx.js +1 -1
- package/package.json +1 -1
|
@@ -4,6 +4,7 @@ import { quoteFamily } from '../measure/font.js';
|
|
|
4
4
|
import { directiveAttrRanges, replaceTitleBreaks } from '../parse/inlineFormatting.js';
|
|
5
5
|
import { texLabelMatches } from '../parse/equationLabels.js';
|
|
6
6
|
import { extractFrontmatter } from '../frontmatter.js';
|
|
7
|
+
import { parseComicFence } from '../comics/index.js';
|
|
7
8
|
// The scans that replace regular expressions CodeQL found slow on long
|
|
8
9
|
// runs (#808) read what the expressions read: checked against them on
|
|
9
10
|
// random strings, and timed on the runs that made them slow.
|
|
@@ -99,6 +100,26 @@ describe('inline directive scans', () => {
|
|
|
99
100
|
expect(performance.now() - t).toBeLessThan(1000);
|
|
100
101
|
});
|
|
101
102
|
});
|
|
103
|
+
describe('directive lines', () => {
|
|
104
|
+
// `::panel\s*(?:{…})?\s*$` let both runs share the spaces (#1220): the
|
|
105
|
+
// leading run now belongs to the attribute group.
|
|
106
|
+
const alphabet = ['::panel', ' ', '\t', '{', '}', 'a', '=', '"', 'x'];
|
|
107
|
+
it('read the lines the old expression read', () => {
|
|
108
|
+
const before = /^::panel\s*(?:\{([^}]*)\})?\s*$/;
|
|
109
|
+
const after = /^::panel(?:\s*\{([^}]*)\})?\s*$/;
|
|
110
|
+
for (let r = 0; r < ROUNDS; r++) {
|
|
111
|
+
const s = `::panel${text(alphabet, 12)}`;
|
|
112
|
+
expect(after.exec(s)?.slice(), JSON.stringify(s)).toEqual(before.exec(s)?.slice());
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
it('read a panel line with a long space run at once', () => {
|
|
116
|
+
const t = performance.now();
|
|
117
|
+
const source = parseComicFence(`:::page\n::panel${'\t'.repeat(100_000)}x\n::panel {shape=round}\t\n:::`, 0).source;
|
|
118
|
+
expect(source.panels).toHaveLength(1);
|
|
119
|
+
expect(source.panels[0].attrs).toEqual({ shape: 'round' });
|
|
120
|
+
expect(performance.now() - t).toBeLessThan(1000);
|
|
121
|
+
});
|
|
122
|
+
});
|
|
102
123
|
describe('front matter', () => {
|
|
103
124
|
it('never runs a JavaScript block', () => {
|
|
104
125
|
const g = globalThis;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"linearScans.test.js","sourceRoot":"","sources":["../../src/__tests__/linearScans.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACrG,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AACvF,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"linearScans.test.js","sourceRoot":"","sources":["../../src/__tests__/linearScans.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sourceMap.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/parse/sourceMap.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
|
+
// @ts-expect-error -- a Node built-in: the package compiles without @types/node.
|
|
3
|
+
import { existsSync as exists, readdirSync as readDir, readFileSync as readFile } from 'node:fs';
|
|
4
|
+
import { strFromU8, unzipSync } from 'fflate';
|
|
5
|
+
import { parseMarkdown } from '../../parse/index.js';
|
|
6
|
+
// A block's `sourceMap` points every character of its text at its own
|
|
7
|
+
// source character (#1215), after citations, cross-references, maths and
|
|
8
|
+
// code spans holding role syntax as everywhere else.
|
|
9
|
+
/** Placeholders: the character stands for markup in the source. */
|
|
10
|
+
const PLACEHOLDER = new RegExp('[\\uE000-\\uF8FF\\uFFFC\\u2028\\u2063\\u2064\\t]');
|
|
11
|
+
/** What a placeholder's entry may point at: the first character of its
|
|
12
|
+
* markup (`[@k]`, `@k`, `-@k`, `:ref{`, `\ref{`, `$`, `[^n]`, `:chip[`,
|
|
13
|
+
* a tab, a verse's hemistich `|`, a `\\` break). */
|
|
14
|
+
const MARKUP_START = new Set(['[', '@', '-', ':', '\\', '$', '\t', '|']);
|
|
15
|
+
/** Why `block`'s map is wrong, or undefined. */
|
|
16
|
+
function mapProblem(markdown, block) {
|
|
17
|
+
const { text, sourceMap: map } = block;
|
|
18
|
+
if (map.length !== text.length)
|
|
19
|
+
return `map ${map.length} for text ${text.length}`;
|
|
20
|
+
for (let i = 0; i < text.length; i++) {
|
|
21
|
+
const at = map[i];
|
|
22
|
+
if (i > 0 && at < map[i - 1])
|
|
23
|
+
return `entry ${i} goes back (${map[i - 1]} → ${at})`;
|
|
24
|
+
const c = text[i];
|
|
25
|
+
const s = markdown[at];
|
|
26
|
+
if (c === s)
|
|
27
|
+
continue;
|
|
28
|
+
// A space joining two lines, or collapsing a run of whitespace.
|
|
29
|
+
if (c === ' ' && s !== undefined && /\s/.test(s))
|
|
30
|
+
continue;
|
|
31
|
+
// The tie of `Eq.~\eqref{…}`.
|
|
32
|
+
if (c === ' ' && s === '~')
|
|
33
|
+
continue;
|
|
34
|
+
if (PLACEHOLDER.test(c) && s !== undefined && MARKUP_START.has(s))
|
|
35
|
+
continue;
|
|
36
|
+
return `entry ${i} (${JSON.stringify(c)}) points at ${JSON.stringify(s)} (${at})`;
|
|
37
|
+
}
|
|
38
|
+
return undefined;
|
|
39
|
+
}
|
|
40
|
+
const existsSync = exists;
|
|
41
|
+
const readdirSync = readDir;
|
|
42
|
+
const readFileSync = readFile;
|
|
43
|
+
function expectMapped(markdown) {
|
|
44
|
+
const [block] = parseMarkdown(markdown);
|
|
45
|
+
expect(mapProblem(markdown, block)).toBeUndefined();
|
|
46
|
+
return block;
|
|
47
|
+
}
|
|
48
|
+
describe('sourceMap after citations', () => {
|
|
49
|
+
it('maps a bracketed citation to its `[` and the text after it to its own characters', () => {
|
|
50
|
+
const b = expectMapped('See [@knuth] after.');
|
|
51
|
+
expect(b.sourceMap).toEqual([0, 1, 2, 3, 4, 12, 13, 14, 15, 16, 17, 18]);
|
|
52
|
+
});
|
|
53
|
+
it('maps a narrative citation, one with a locator and one without the author', () => {
|
|
54
|
+
expectMapped('A cite @knuth after.');
|
|
55
|
+
expectMapped('As @knuth [p. 33] says, and [-@lamport, chap. 2] too.');
|
|
56
|
+
expectMapped('Two [see @a, p. 1; @b] then @c.\nA second line [@d].');
|
|
57
|
+
});
|
|
58
|
+
it('keeps the space before a citation (it is no tab)', () => {
|
|
59
|
+
const b = expectMapped('Text [@a] and\ttab.');
|
|
60
|
+
expect(b.text.length).toBe(b.sourceMap.length);
|
|
61
|
+
});
|
|
62
|
+
});
|
|
63
|
+
describe('sourceMap after cross-references', () => {
|
|
64
|
+
it('maps `@sec:id` and `[@fig:id]` to their markup', () => {
|
|
65
|
+
expectMapped('As @sec:battery shows, the array (see [@fig:sun]) works.');
|
|
66
|
+
expectMapped('Eq.~\\eqref{eq:one} and \\ref{eq:two} hold.');
|
|
67
|
+
});
|
|
68
|
+
});
|
|
69
|
+
describe('sourceMap after maths', () => {
|
|
70
|
+
it('maps a formula after a reference to its own `$`', () => {
|
|
71
|
+
const md = ':ref{id="runs" style="full"} plots the ratio to $T_0$, against $\\theta_0$.';
|
|
72
|
+
const b = expectMapped(md);
|
|
73
|
+
const maths = b.spans.filter((s) => s.math).map((s) => s.math.sourceStart);
|
|
74
|
+
expect(maths).toEqual([md.indexOf('$T_0$'), md.indexOf('$\\theta_0$')]);
|
|
75
|
+
});
|
|
76
|
+
});
|
|
77
|
+
describe('sourceMap after code spans holding role syntax', () => {
|
|
78
|
+
it('maps the text of `` `:smallcaps[…]` `` and the text after it', () => {
|
|
79
|
+
const b = expectMapped('Use `:smallcaps[…]` sets small caps here.');
|
|
80
|
+
expect(b.text).toBe('Use :smallcaps[…] sets small caps here.');
|
|
81
|
+
});
|
|
82
|
+
it('maps `` `:mark[…]` `` in code and a real mark after it', () => {
|
|
83
|
+
expectMapped('Write `:mark[x]{style="a"}` for :mark[this]{style="a"} text.');
|
|
84
|
+
});
|
|
85
|
+
});
|
|
86
|
+
const PUBLIC = new URL('../../../../../apps/web/public/', import.meta.url);
|
|
87
|
+
/** The chapters of every bundle of the guide and the Cookbook, each text
|
|
88
|
+
* once. */
|
|
89
|
+
function publishedChapters() {
|
|
90
|
+
const files = [new URL('bundles/postext-guide.postext', PUBLIC)];
|
|
91
|
+
const cookbook = new URL('cookbook/', PUBLIC);
|
|
92
|
+
for (const recipe of existsSync(cookbook) ? readdirSync(cookbook) : []) {
|
|
93
|
+
const dir = new URL(`${recipe}/`, cookbook);
|
|
94
|
+
for (const locale of readdirSync(dir)) {
|
|
95
|
+
const file = new URL(`${locale}/${recipe}.postext`, dir);
|
|
96
|
+
if (existsSync(file))
|
|
97
|
+
files.push(file);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
const seen = new Set();
|
|
101
|
+
const out = [];
|
|
102
|
+
for (const file of files) {
|
|
103
|
+
for (const [path, data] of Object.entries(unzipSync(readFileSync(file)))) {
|
|
104
|
+
if (!path.startsWith('chapters/') || !path.endsWith('.md'))
|
|
105
|
+
continue;
|
|
106
|
+
const markdown = strFromU8(data);
|
|
107
|
+
if (seen.has(markdown))
|
|
108
|
+
continue;
|
|
109
|
+
seen.add(markdown);
|
|
110
|
+
out.push({ name: `${file.href.slice(PUBLIC.href.length)} ${path}`, markdown });
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
return out;
|
|
114
|
+
}
|
|
115
|
+
describe('sourceMap of the guide and the Cookbook', () => {
|
|
116
|
+
it('points every character of every block at its source', () => {
|
|
117
|
+
const chapters = publishedChapters();
|
|
118
|
+
expect(chapters.length).toBeGreaterThan(100);
|
|
119
|
+
const problems = [];
|
|
120
|
+
for (const { name, markdown } of chapters) {
|
|
121
|
+
for (const block of parseMarkdown(markdown)) {
|
|
122
|
+
const problem = mapProblem(markdown, block);
|
|
123
|
+
if (problem)
|
|
124
|
+
problems.push(`${name} (${block.type} at ${block.sourceStart}): ${problem}`);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
expect(problems).toEqual([]);
|
|
128
|
+
}, 60_000);
|
|
129
|
+
});
|
|
130
|
+
//# sourceMappingURL=sourceMap.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sourceMap.test.js","sourceRoot":"","sources":["../../../src/__tests__/parse/sourceMap.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -90,5 +90,20 @@ describe('a span: page heading that opens mid-page (#539)', () => {
|
|
|
90
90
|
expect(second.pageIndex).toBeGreaterThan(first.pageIndex);
|
|
91
91
|
expect(doc.pages[second.pageIndex].columns[second.columnIndex].band ?? 0).toBe(0);
|
|
92
92
|
});
|
|
93
|
+
it('moves on when the headings under it roll it back out of the band it opened (#1219)', () => {
|
|
94
|
+
// The band under the cut holds the heading and a few lines, not the
|
|
95
|
+
// heading with the run of headings kept with it: kept with next, the
|
|
96
|
+
// run goes on to the band's next column, where the heading was set at
|
|
97
|
+
// the band's head again and rolled back again, without end.
|
|
98
|
+
const words = SENTENCE.repeat(60).split(' ').slice(0, 640).join(' ');
|
|
99
|
+
const subheads = ['## Tuesday the long title of the event here', '', '## Tuesday the long title of the event here', '', '## Tuesday the long title of the event here', ''];
|
|
100
|
+
const md = ['# The first article {style="article"}', '', words, '', '# The second article {style="article"}', '', ...subheads, filler(3)].join('\n');
|
|
101
|
+
const doc = buildDocument({ markdown: md }, { ...config(article({ spanBreak: false })), headings: { balancing: { trailing: false } } }, createMeasurementCache());
|
|
102
|
+
const [first, second, ...run] = headings(doc);
|
|
103
|
+
expect(second.pageIndex).toBeGreaterThan(first.pageIndex);
|
|
104
|
+
expect(doc.pages[second.pageIndex].columns[second.columnIndex].band ?? 0).toBe(0);
|
|
105
|
+
for (const h of run)
|
|
106
|
+
expect(h.pageIndex).toBe(second.pageIndex);
|
|
107
|
+
});
|
|
93
108
|
});
|
|
94
109
|
//# sourceMappingURL=spanHeadingMidPage.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spanHeadingMidPage.test.js","sourceRoot":"","sources":["../../../src/__tests__/pipeline/spanHeadingMidPage.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"spanHeadingMidPage.test.js","sourceRoot":"","sources":["../../../src/__tests__/pipeline/spanHeadingMidPage.test.ts"],"names":[],"mappings":"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"}
|
package/dist/comics/page.js
CHANGED
|
@@ -21,7 +21,7 @@ import { isComicTextPanel } from './frames.js';
|
|
|
21
21
|
/** `:::page` / `:::strip` with an optional attribute block. */
|
|
22
22
|
const COMIC_FENCE_RE = /^:::\s*(page|strip)(?:\s*\{([^}]*)\})?\s*$/;
|
|
23
23
|
/** `::panel` with an optional attribute block, alone on its line. */
|
|
24
|
-
const PANEL_RE = /^::panel
|
|
24
|
+
const PANEL_RE = /^::panel(?:\s*\{([^}]*)\})?\s*$/;
|
|
25
25
|
/** The bare `:::` that closes the page. */
|
|
26
26
|
const CLOSE_RE = /^:::\s*$/;
|
|
27
27
|
/** The fence names whose body is a comic. */
|
|
@@ -29,7 +29,7 @@ const CONTAINER_CLOSE_RE = /^:::\s*$/;
|
|
|
29
29
|
/** A composed page's opening fence (#854): four or more colons, `page`,
|
|
30
30
|
* its attributes (`::::page{template="…"}`). Three colons stay a comic
|
|
31
31
|
* page (`:::page{split}`). */
|
|
32
|
-
const PAGE_FENCE_RE = /^(:{4,})\s*page
|
|
32
|
+
const PAGE_FENCE_RE = /^(:{4,})\s*page(?:\s*\{([^}]*)\})?\s*$/;
|
|
33
33
|
/** A bare fence of four or more colons: it closes the composed page opened
|
|
34
34
|
* with as many (#854). */
|
|
35
35
|
const LONG_CLOSE_RE = /^(:{4,})\s*$/;
|
|
@@ -388,7 +388,7 @@ function withChipSources(markdown, mapping) {
|
|
|
388
388
|
* the spaces that joined two lines between East Asian characters taken
|
|
389
389
|
* out (CSS Text 3 §4.1.3, see `softBreaks.ts`). */
|
|
390
390
|
function joinedLines(markdown, mapping) {
|
|
391
|
-
fixMathSourceMap(mapping.text, mapping.spans, mapping.sourceMap);
|
|
391
|
+
fixMathSourceMap(markdown, mapping.text, mapping.spans, mapping.sourceMap);
|
|
392
392
|
return joinEastAsianLines(markdown, mapping.text, mapping.spans, mapping.sourceMap) ?? mapping;
|
|
393
393
|
}
|
|
394
394
|
/**
|
|
@@ -931,7 +931,7 @@ function parseBlocks(markdown, options) {
|
|
|
931
931
|
if (close < 0)
|
|
932
932
|
return undefined;
|
|
933
933
|
const rest = body.slice(close + 1);
|
|
934
|
-
const attrsMatch =
|
|
934
|
+
const attrsMatch = /^(?:\s*\{([^}]*)\})?\s*$/.exec(rest);
|
|
935
935
|
if (!attrsMatch)
|
|
936
936
|
return undefined;
|
|
937
937
|
const lineStart = lineOffsets[k];
|
|
@@ -1577,7 +1577,7 @@ function parseBlocks(markdown, options) {
|
|
|
1577
1577
|
// (`plainHeadingBlocks`).
|
|
1578
1578
|
const rawSpans = injectChipSpans(injectRefSpans(injectSwatchSpans(injectMathSpans(trimSpans(parseInlineFormatting(cleaned)), maths), swExtract.swatches), refExtract.refs), chipExtract.chips);
|
|
1579
1579
|
const mapping = withChipSources(markdown, buildBlockMapping(markdown, srcStart, srcEnd, rawSpans));
|
|
1580
|
-
fixMathSourceMap(mapping.text, mapping.spans, mapping.sourceMap);
|
|
1580
|
+
fixMathSourceMap(markdown, mapping.text, mapping.spans, mapping.sourceMap);
|
|
1581
1581
|
const titleBreaks = titleBreakIndices(mapping.text);
|
|
1582
1582
|
blocks.push({
|
|
1583
1583
|
type: 'heading',
|