punctilio 5.4.9 → 5.5.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.
Files changed (46) hide show
  1. package/README.md +6 -6
  2. package/dist/constants.d.ts +2 -0
  3. package/dist/constants.d.ts.map +1 -1
  4. package/dist/constants.js +3 -1
  5. package/dist/constants.js.map +1 -1
  6. package/dist/dashes.d.ts.map +1 -1
  7. package/dist/dashes.js +3 -3
  8. package/dist/dashes.js.map +1 -1
  9. package/dist/nbsp.d.ts.map +1 -1
  10. package/dist/nbsp.js +26 -39
  11. package/dist/nbsp.js.map +1 -1
  12. package/dist/prettier-plugin.d.ts.map +1 -1
  13. package/dist/prettier-plugin.js +3 -2
  14. package/dist/prettier-plugin.js.map +1 -1
  15. package/dist/prose-view.d.ts +26 -0
  16. package/dist/prose-view.d.ts.map +1 -1
  17. package/dist/prose-view.js +87 -1
  18. package/dist/prose-view.js.map +1 -1
  19. package/dist/quote-classifier.d.ts.map +1 -1
  20. package/dist/quote-classifier.js +67 -20
  21. package/dist/quote-classifier.js.map +1 -1
  22. package/dist/rehype.d.ts +14 -8
  23. package/dist/rehype.d.ts.map +1 -1
  24. package/dist/rehype.js +36 -23
  25. package/dist/rehype.js.map +1 -1
  26. package/dist/remark.d.ts.map +1 -1
  27. package/dist/remark.js +71 -11
  28. package/dist/remark.js.map +1 -1
  29. package/dist/symbols.d.ts.map +1 -1
  30. package/dist/symbols.js +7 -3
  31. package/dist/symbols.js.map +1 -1
  32. package/dist/transform-options.d.ts +3 -2
  33. package/dist/transform-options.d.ts.map +1 -1
  34. package/dist/transform-options.js +6 -0
  35. package/dist/transform-options.js.map +1 -1
  36. package/package.json +3 -2
  37. package/src/constants.ts +4 -1
  38. package/src/dashes.ts +3 -2
  39. package/src/nbsp.ts +26 -40
  40. package/src/prettier-plugin.ts +3 -2
  41. package/src/prose-view.ts +99 -1
  42. package/src/quote-classifier.ts +68 -19
  43. package/src/rehype.ts +64 -36
  44. package/src/remark.ts +85 -12
  45. package/src/symbols.ts +8 -4
  46. package/src/transform-options.ts +11 -2
@@ -15,6 +15,13 @@ export interface ProseView {
15
15
  /** Apply queued edits back onto the source nodes (mutating their `value`s), then recompute `text`/`boundaries`. The view supports arbitrarily many queue/commit cycles. */
16
16
  commit(): void;
17
17
  }
18
+ /**
19
+ * The scan index one position past `index`: one code point for a unicode-mode
20
+ * (u/v) regex, else one code unit. Resuming a unicode-mode regex inside a
21
+ * surrogate pair makes `exec` back up to the pair's start and re-match there
22
+ * forever.
23
+ */
24
+ export declare function advanceScanIndex(text: string, index: number, regex: RegExp): number;
18
25
  export declare function buildProseView(nodes: ProseNode[]): ProseView;
19
26
  /**
20
27
  * Partitions `items` into contiguous groups, breaking before every index in
@@ -23,6 +30,25 @@ export declare function buildProseView(nodes: ProseNode[]): ProseView;
23
30
  * segments so a pass never sees text as adjacent across removed content.
24
31
  */
25
32
  export declare function splitAtIndices<T>(items: readonly T[], breakBefore: ReadonlySet<number>): T[][];
33
+ /**
34
+ * Stand-in for removed opaque inline content (a skipped element, an image,
35
+ * inline code) inside a spanning view. U+FFFC OBJECT REPLACEMENT CHARACTER is
36
+ * Unicode's placeholder for an embedded object: it is neither space, word
37
+ * character, nor punctuation, so a pass needing adjacent text never matches
38
+ * across it (`5<code>c</code>x 3` stays put), while the quote classifier still
39
+ * sees real content between a quote and its partner (`"<kbd>q</kbd>"` pairs).
40
+ */
41
+ export declare const OPAQUE_PLACEHOLDER = "\uFFFC";
42
+ /**
43
+ * Runs `run` over `nodes` as one view with a placeholder node (see
44
+ * {@link OPAQUE_PLACEHOLDER}) at each opaque gap (`breakBefore`, as for
45
+ * {@link splitAtIndices}), so context-sensitive passes such as quote pairing
46
+ * read across the gap. The view is committed after `run`. If any edit lands in
47
+ * a placeholder (one that spans, replaces, or is inserted into the gap), the
48
+ * nodes are restored and `run` goes over each opaque-delimited segment on its
49
+ * own instead, so no edit ever lands in or through a gap.
50
+ */
51
+ export declare function runAcrossOpaqueGaps(nodes: readonly ProseNode[], breakBefore: ReadonlySet<number>, run: (view: ProseView) => void): void;
26
52
  export interface ReplaceAllOptions {
27
53
  /** Opt-in: allow a match that contains an interior node boundary. Default: such matches are skipped. */
28
54
  allowBoundaries?: (match: RegExpExecArray, view: ProseView) => boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"prose-view.d.ts","sourceRoot":"","sources":["../src/prose-view.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,SAAS;IACxB,4DAA4D;IAC5D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,2KAA2K;IAC3K,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,iFAAiF;IACjF,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;IACrC,oGAAoG;IACpG,OAAO,CACL,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,GACjC,IAAI,CAAC;IACR,2KAA2K;IAC3K,MAAM,IAAI,IAAI,CAAC;CAChB;AAuND,wBAAgB,cAAc,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,SAAS,CAE5D;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAC9B,KAAK,EAAE,SAAS,CAAC,EAAE,EACnB,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,GAC/B,CAAC,EAAE,EAAE,CAcP;AAED,MAAM,WAAW,iBAAiB;IAChC,wGAAwG;IACxG,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,SAAS,KAAK,OAAO,CAAC;IACvE,2EAA2E;IAC3E,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CACzB;AA4BD,4EAA4E;AAC5E,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,SAAS,EACf,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,GACV,MAAM,CAMR;AAED,oFAAoF;AACpF,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAI1E;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,SAAS,EACf,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,SAAS,MAAM,EAAE,GAC9B,OAAO,CAUT;AAED,kFAAkF;AAClF,wBAAgB,eAAe,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CASvE;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,SAAS,EACf,MAAM,EAAE,MAAM,GACb,OAAO,CAET;AAED,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,SAAS,EACf,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,CAAC,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,SAAS,KAAK,MAAM,GAAG,IAAI,EACpE,OAAO,CAAC,EAAE,iBAAiB,GAC1B,IAAI,CAkCN;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,GAC7B,MAAM,CAMR;AAED;;;;GAIG;AACH,MAAM,MAAM,SAAS,GAAG;IACtB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC;CAC1B,CAAC;AAEF,MAAM,WAAW,iBAAiB;IAChC;;;;;;;;;OASG;IACH,UAAU,CAAC,EACP,MAAM,GACN,OAAO,GACP,CAAC,CAAC,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,SAAS,KAAK,OAAO,CAAC,CAAC;CAC5D;AA0JD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,UAAU,CACxB,OAAO,EAAE,MAAM,EACf,WAAW,EACP,MAAM,GACN,CAAC,CAAC,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,SAAS,KAAK,MAAM,GAAG,IAAI,CAAC,EAChE,OAAO,GAAE,iBAAsB,GAC9B,SAAS,CAsCX;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CACvB,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,GAC7B,MAAM,CAAC;AACV,wBAAgB,SAAS,CACvB,KAAK,EAAE,SAAS,EAChB,GAAG,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,GAC7B,IAAI,CAAC;AACR,wBAAgB,SAAS,CACvB,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,GAAG,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,GAC7B,MAAM,GAAG,IAAI,CAAC;AAYjB;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,GAAG,SAAS,CAOvE"}
1
+ {"version":3,"file":"prose-view.d.ts","sourceRoot":"","sources":["../src/prose-view.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,16 @@ function splitsSurrogatePair(text, offset) {
6
6
  const low = text.charCodeAt(offset);
7
7
  return high >= 0xd800 && high <= 0xdbff && low >= 0xdc00 && low <= 0xdfff;
8
8
  }
9
+ /**
10
+ * The scan index one position past `index`: one code point for a unicode-mode
11
+ * (u/v) regex, else one code unit. Resuming a unicode-mode regex inside a
12
+ * surrogate pair makes `exec` back up to the pair's start and re-match there
13
+ * forever.
14
+ */
15
+ export function advanceScanIndex(text, index, regex) {
16
+ const unicodeMode = regex.unicode || regex.flags.includes("v");
17
+ return index + (unicodeMode && splitsSurrogatePair(text, index + 1) ? 2 : 1);
18
+ }
9
19
  class ProseViewImpl {
10
20
  nodes;
11
21
  cachedText;
@@ -193,6 +203,82 @@ export function splitAtIndices(items, breakBefore) {
193
203
  groups.push(items.slice(start));
194
204
  return groups;
195
205
  }
206
+ /**
207
+ * Stand-in for removed opaque inline content (a skipped element, an image,
208
+ * inline code) inside a spanning view. U+FFFC OBJECT REPLACEMENT CHARACTER is
209
+ * Unicode's placeholder for an embedded object: it is neither space, word
210
+ * character, nor punctuation, so a pass needing adjacent text never matches
211
+ * across it (`5<code>c</code>x 3` stays put), while the quote classifier still
212
+ * sees real content between a quote and its partner (`"<kbd>q</kbd>"` pairs).
213
+ */
214
+ export const OPAQUE_PLACEHOLDER = "\uFFFC";
215
+ /**
216
+ * Single-quote edge stand-ins. The classifier reads end of text as an ending
217
+ * context after a closing single quote and as an opening context before an
218
+ * opening one, but reads {@link OPAQUE_PLACEHOLDER} as neither, so `'hi'` or
219
+ * `boys'` directly before a gap, or `'hi'` directly after one, would lose the
220
+ * role the segment edge gives it. A `)` after the quote and a `(` before it
221
+ * restore those contexts without blocking a pair across the gap
222
+ * (`'<code>x</code>'` still pairs). They are added only beside a single quote:
223
+ * double quotes read the placeholder correctly, and `)` would block a double
224
+ * opener.
225
+ */
226
+ const SEGMENT_END_STAND_IN = ")";
227
+ const SEGMENT_START_STAND_IN = "(";
228
+ /** Straight, curly, modifier-letter and low-9 single-quote characters. */
229
+ const SINGLE_QUOTE_CHARS = new Set([
230
+ "'",
231
+ "\u2018",
232
+ "\u2019",
233
+ "\u02BC",
234
+ "\u201A",
235
+ ]);
236
+ /** Gap stand-in for the text between `before` and `after`. */
237
+ function gapPlaceholder(before, after) {
238
+ const afterQuote = SINGLE_QUOTE_CHARS.has(before.slice(-1));
239
+ const beforeQuote = SINGLE_QUOTE_CHARS.has(after.slice(0, 1));
240
+ return ((afterQuote ? SEGMENT_END_STAND_IN : "") +
241
+ OPAQUE_PLACEHOLDER +
242
+ (beforeQuote ? SEGMENT_START_STAND_IN : ""));
243
+ }
244
+ /**
245
+ * Runs `run` over `nodes` as one view with a placeholder node (see
246
+ * {@link OPAQUE_PLACEHOLDER}) at each opaque gap (`breakBefore`, as for
247
+ * {@link splitAtIndices}), so context-sensitive passes such as quote pairing
248
+ * read across the gap. The view is committed after `run`. If any edit lands in
249
+ * a placeholder (one that spans, replaces, or is inserted into the gap), the
250
+ * nodes are restored and `run` goes over each opaque-delimited segment on its
251
+ * own instead, so no edit ever lands in or through a gap.
252
+ */
253
+ export function runAcrossOpaqueGaps(nodes, breakBefore, run) {
254
+ if (nodes.length === 0)
255
+ return;
256
+ const originalValues = nodes.map((node) => node.value);
257
+ const placeholders = [];
258
+ const spanning = [];
259
+ nodes.forEach((node, index) => {
260
+ if (breakBefore.has(index)) {
261
+ const value = gapPlaceholder(nodes[index - 1].value, node.value);
262
+ const placeholder = { value };
263
+ placeholders.push({ node: placeholder, value });
264
+ spanning.push(placeholder);
265
+ }
266
+ spanning.push(node);
267
+ });
268
+ const spanningView = buildProseView(spanning);
269
+ run(spanningView);
270
+ spanningView.commit();
271
+ if (placeholders.every(({ node, value }) => node.value === value))
272
+ return;
273
+ nodes.forEach((node, index) => {
274
+ node.value = originalValues[index];
275
+ });
276
+ for (const group of splitAtIndices(nodes, breakBefore)) {
277
+ const segmentView = buildProseView(group);
278
+ run(segmentView);
279
+ segmentView.commit();
280
+ }
281
+ }
196
282
  /**
197
283
  * Index of the first element in sorted `values` that is >= `target`. The
198
284
  * boundary helpers below run per candidate offset in the pass scanners, so a
@@ -272,7 +358,7 @@ export function replaceAllInView(view, regex, replacer, options) {
272
358
  let match;
273
359
  while ((match = regex.exec(text)) !== null) {
274
360
  if (match[0].length === 0) {
275
- regex.lastIndex += 1;
361
+ regex.lastIndex = advanceScanIndex(text, regex.lastIndex, regex);
276
362
  }
277
363
  if (matchContainsBoundary(match, view) && !allowBoundaries?.(match, view)) {
278
364
  continue;
@@ -1 +1 @@
1
- {"version":3,"file":"prose-view.js","sourceRoot":"","sources":["../src/prose-view.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prose-view.js","sourceRoot":"","sources":["../src/prose-view.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"quote-classifier.d.ts","sourceRoot":"","sources":["../src/quote-classifier.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAwChD,eAAO,MAAM,kBAAkB,8DAA+D,CAAA;AAC9F,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAA;AAElE,gFAAgF;AAChF,MAAM,MAAM,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAA;AAEhE;;;;;GAKG;AACH,MAAM,MAAM,SAAS,GACjB,YAAY,GACZ,cAAc,GACd,cAAc,GACd,cAAc,GACd,SAAS,GACT,aAAa,GACb,aAAa,GACb,OAAO,CAAA;AA44CX;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,SAAS,EACf,KAAK,EAAE,gBAAgB,EACvB,UAAU,EAAE,MAAM,GACjB,IAAI,CAeN;AA6GD,mGAAmG;AACnG,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI,CAWvD"}
1
+ {"version":3,"file":"quote-classifier.d.ts","sourceRoot":"","sources":["../src/quote-classifier.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AA0ChD,eAAO,MAAM,kBAAkB,8DAA+D,CAAA;AAC9F,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAA;AAElE,gFAAgF;AAChF,MAAM,MAAM,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAA;AAEhE;;;;;GAKG;AACH,MAAM,MAAM,SAAS,GACjB,YAAY,GACZ,cAAc,GACd,cAAc,GACd,cAAc,GACd,SAAS,GACT,aAAa,GACb,aAAa,GACb,OAAO,CAAA;AA07CX;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,SAAS,EACf,KAAK,EAAE,gBAAgB,EACvB,UAAU,EAAE,MAAM,GACjB,IAAI,CAgBN;AA6GD,mGAAmG;AACnG,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI,CAWvD"}
@@ -1,5 +1,5 @@
1
- import { FOLDED_WORD_CHARS, LATIN_LETTER_RE, SPACE_CHAR_RE, TERMINAL_PUNCTUATION, UNICODE_SYMBOLS, WORD_RE } from "./constants.js";
2
- const { EM_DASH, EN_DASH, MINUS, LEFT_DOUBLE_QUOTE, RIGHT_DOUBLE_QUOTE, LEFT_SINGLE_QUOTE, RIGHT_SINGLE_QUOTE, MODIFIER_LETTER_APOSTROPHE, DOUBLE_LOW_9_QUOTE, SINGLE_LOW_9_QUOTE, LEFT_GUILLEMET, RIGHT_GUILLEMET, NBSP, NNBSP, PRIME, DOUBLE_PRIME, ELLIPSIS, DOUBLE_QUESTION, QUESTION_EXCLAMATION, EXCLAMATION_QUESTION, DOUBLE_EXCLAMATION, INTERROBANG, APPROXIMATE, GREATER_EQUAL, LESS_EQUAL, NOT_EQUAL, PLUS_MINUS, } = UNICODE_SYMBOLS;
1
+ import { CLOSING_BRACKETS, FOLDED_WORD_CHARS, LATIN_LETTER_RE, OPENING_BRACKETS, SPACE_CHAR_RE, TERMINAL_PUNCTUATION, UNICODE_SYMBOLS, WORD_RE } from "./constants.js";
2
+ const { EM_DASH, EN_DASH, MINUS, LEFT_DOUBLE_QUOTE, RIGHT_DOUBLE_QUOTE, LEFT_SINGLE_QUOTE, RIGHT_SINGLE_QUOTE, MODIFIER_LETTER_APOSTROPHE, DOUBLE_LOW_9_QUOTE, SINGLE_LOW_9_QUOTE, LEFT_GUILLEMET, RIGHT_GUILLEMET, INVERTED_EXCLAMATION, INVERTED_QUESTION, NBSP, NNBSP, PRIME, DOUBLE_PRIME, ELLIPSIS, DOUBLE_QUESTION, QUESTION_EXCLAMATION, EXCLAMATION_QUESTION, DOUBLE_EXCLAMATION, INTERROBANG, APPROXIMATE, GREATER_EQUAL, LESS_EQUAL, NOT_EQUAL, PLUS_MINUS, } = UNICODE_SYMBOLS;
3
3
  /**
4
4
  * Glyphs the symbol passes fold `?`/`!` runs and `...` into. The quote rules
5
5
  * run before those passes, so every ending-context set that contains the
@@ -44,9 +44,10 @@ const SINGLE_ENDING_SET = new Set([".", "!", "?", ";", ":", ",", ")", EM_DASH, "
44
44
  * straight double quote belongs with the curly pair: whichever way it curls
45
45
  * lands in this set, so deciding as if it already had keeps re-runs (which
46
46
  * see the curled glyph) consistent. */
47
- const SINGLE_OPEN_BEFORE_SET = new Set([LEFT_DOUBLE_QUOTE, RIGHT_DOUBLE_QUOTE, '"', EM_DASH, "-", "("]);
48
- /** Boundary chars before an opening double quote (plus any \s char). */
49
- const DOUBLE_OPEN_BEFORE_SET = new Set(["(", "/", "[", "{", "-", EM_DASH]);
47
+ const SINGLE_OPEN_BEFORE_SET = new Set([LEFT_DOUBLE_QUOTE, RIGHT_DOUBLE_QUOTE, '"', EM_DASH, "-", "(", "/", "[", "{", INVERTED_QUESTION, INVERTED_EXCLAMATION]);
48
+ /** Boundary chars before an opening double quote (plus any \s char). A
49
+ * single opener qualifies: a double quoted directly inside a single. */
50
+ const DOUBLE_OPEN_BEFORE_SET = new Set(["(", "/", "[", "{", "-", EM_DASH, LEFT_SINGLE_QUOTE, INVERTED_QUESTION, INVERTED_EXCLAMATION]);
50
51
  /** Ending-context chars that block the opener rule's arm 2 (plus any \s char).
51
52
  * ELLIPSIS is deliberately absent: the rule's `...` arm opens, so `…` must too. */
52
53
  const DOUBLE_OPEN_ENDING_SET = new Set([")", EM_DASH, ",", "!", "?", ";", ":", ".", "}", ...FOLDED_TERMINALS]);
@@ -57,9 +58,9 @@ const DOUBLE_EMPTY_BEFORE_SET = new Set(["(", "[", "{"]);
57
58
  * rule rejects falls through to opener/closer rules whose after-contexts are
58
59
  * the closer set, and the two routes must accept the same shapes or a re-run
59
60
  * (which sees the rendered opener, not the whitespace) classifies anew. */
60
- const DOUBLE_EMPTY_AFTER_SET = new Set([")", "]", "}", ".", "!", "?", ",", ";", ":", "/", "-", "s", EM_DASH, ELLIPSIS, ...FOLDED_TERMINALS]);
61
+ const DOUBLE_EMPTY_AFTER_SET = new Set([")", "]", "}", ".", "!", "?", ",", ";", ":", "/", "-", "s", EM_DASH, ELLIPSIS, RIGHT_SINGLE_QUOTE, ...FOLDED_TERMINALS]);
61
62
  /** Ending-context chars after a closing double quote (plus any \s char). */
62
- const DOUBLE_CLOSE_AFTER_SET = new Set(["/", ")", "]", ".", ",", ";", EM_DASH, ":", "-", "}", "!", "?", "s", ELLIPSIS, ...FOLDED_TERMINALS]);
63
+ const DOUBLE_CLOSE_AFTER_SET = new Set(["/", ")", "]", ".", ",", ";", EM_DASH, ":", "-", "}", "!", "?", "s", ELLIPSIS, RIGHT_SINGLE_QUOTE, ...FOLDED_TERMINALS]);
63
64
  /** Builds an `(items, index)` predicate: in range, non-boundary, and `test(ch)`. */
64
65
  function makeItemTester(test) {
65
66
  return (items, index) => {
@@ -197,7 +198,10 @@ function buildItems(view, style) {
197
198
  mapped = DIGIT_RE.test(text[i - 1] ?? "") ? MODIFIER_LETTER_APOSTROPHE : "'";
198
199
  }
199
200
  if (mapped !== null) {
200
- items.push(makeItem(false, mapped, i, i + 1));
201
+ const item = makeItem(false, mapped, i, i + 1);
202
+ if (mapped === '"' || mapped === "'")
203
+ item.curlySource = ch;
204
+ items.push(item);
201
205
  i++;
202
206
  continue;
203
207
  }
@@ -241,10 +245,12 @@ function possessiveAfter(items, index) {
241
245
  /**
242
246
  * `(?<=[^\s“'"])` — the closing/possessive lookbehind. A boundary directly
243
247
  * before the quote satisfies it (a boundary is an ordinary non-space char).
244
- * A straight double quote is excluded along with `“`: it may curl into an
245
- * opener later in this same pass, which puts the candidate in exactly the
246
- * nested-opener position the `“` exclusion covers, and deciding against it
247
- * now keeps re-runs (which see the curled glyph) consistent.
248
+ * A straight double quote in opener position is excluded along with `“`: it
249
+ * curls into an opener later in this same pass, which puts the candidate in
250
+ * exactly the nested-opener position the `“` exclusion covers, and deciding
251
+ * against it now keeps re-runs (which see the curled glyph) consistent. A
252
+ * straight double quote outside opener position curls into a closer (`”`,
253
+ * which passes), so it passes too (`'"Hello"'`).
248
254
  */
249
255
  function singleCloserBefore(items, index) {
250
256
  if (index === 0)
@@ -252,7 +258,9 @@ function singleCloserBefore(items, index) {
252
258
  const prev = items[index - 1];
253
259
  if (prev.boundary)
254
260
  return true;
255
- return !SPACE_RE.test(prev.ch) && prev.ch !== LEFT_DOUBLE_QUOTE && prev.ch !== "'" && prev.ch !== '"';
261
+ if (prev.ch === '"')
262
+ return !doubleOpenerPrefixOk(items, index - 1);
263
+ return !SPACE_RE.test(prev.ch) && prev.ch !== LEFT_DOUBLE_QUOTE && prev.ch !== "'";
256
264
  }
257
265
  /** Letter directly before (no boundary) and letter after (one boundary transparent). */
258
266
  function isContractionContext(items, index) {
@@ -501,7 +509,7 @@ function classifySingles(items, style) {
501
509
  // Double-quote classification
502
510
  // ---------------------------------------------------------------------------
503
511
  /** Empty (`""`) and whitespace-only (`" "`) double-quote pairs (no boundaries allowed anywhere in or around the match). */
504
- function classifyEmptyDoublePairs(items) {
512
+ function classifyEmptyDoublePairs(items, style) {
505
513
  const beforeOk = (index) => {
506
514
  if (index < 0)
507
515
  return true;
@@ -512,7 +520,7 @@ function classifyEmptyDoublePairs(items) {
512
520
  if (index >= items.length)
513
521
  return true;
514
522
  const item = items[index];
515
- return !item.boundary && (SPACE_RE.test(item.ch) || DOUBLE_EMPTY_AFTER_SET.has(item.ch));
523
+ return !item.boundary && (SPACE_RE.test(item.ch) || DOUBLE_EMPTY_AFTER_SET.has(item.ch) || apostropheEndsDouble(item.ch, style));
516
524
  };
517
525
  for (let i = 0; i < items.length - 1; i++) {
518
526
  if (!isCharItem(items, i, '"') || !isCharItem(items, i + 1, '"'))
@@ -768,6 +776,15 @@ function classifyBraceOpeners(items) {
768
776
  function isDoubleCloseAfterChar(ch) {
769
777
  return SPACE_RE.test(ch) || DOUBLE_CLOSE_AFTER_SET.has(ch);
770
778
  }
779
+ /**
780
+ * An apostrophe directly after a double quote ends it, as the closing single
781
+ * quote it renders as does. German is the exception: it re-derives the
782
+ * rendered apostrophe (U+2019) by position, so a re-run can read it as a
783
+ * closing single quote that the first pass, which saw an apostrophe, did not.
784
+ */
785
+ function apostropheEndsDouble(ch, style) {
786
+ return ch === MODIFIER_LETTER_APOSTROPHE && style !== "german";
787
+ }
771
788
  /**
772
789
  * Closing double quote by ending context: a non-space/non-paren character (or
773
790
  * a boundary) before it, and an ending character, a boundary, or end of input
@@ -793,7 +810,7 @@ function classifyClosingDoubles(items, style) {
793
810
  const next = items[i + 1];
794
811
  if (foldsToNotEqual(items, i + 1))
795
812
  continue;
796
- if (next === undefined || next.boundary || isDoubleCloseAfterChar(next.ch)) {
813
+ if (next === undefined || next.boundary || isDoubleCloseAfterChar(next.ch) || apostropheEndsDouble(next.ch, style)) {
797
814
  item.ch = RIGHT_DOUBLE_QUOTE;
798
815
  }
799
816
  }
@@ -820,8 +837,34 @@ function classifySinglesBeforeClosingDoubles(items) {
820
837
  }
821
838
  }
822
839
  }
840
+ /**
841
+ * German reads its rendered glyphs by depth: a U+201C below an open „ closes
842
+ * it. A curly orphan that kept its source glyph (see {@link Item.curlySource})
843
+ * below a quote opened in this same pass is therefore that quote's closer on
844
+ * the next run; label it one now so both runs agree. Singles need no
845
+ * counterpart: a single opener is only recognized when a closer follows it
846
+ * with no straight single in between, and an orphan U+2018 is one.
847
+ */
848
+ function closeCurlyOrphansBelowOpeners(items) {
849
+ let depth = 0;
850
+ for (const item of items) {
851
+ if (item.boundary)
852
+ continue;
853
+ if (item.ch === LEFT_DOUBLE_QUOTE) {
854
+ depth++;
855
+ }
856
+ else if (item.ch === RIGHT_DOUBLE_QUOTE) {
857
+ if (depth > 0)
858
+ depth--;
859
+ }
860
+ else if (item.ch === '"' && item.curlySource === LEFT_DOUBLE_QUOTE && depth > 0) {
861
+ item.ch = RIGHT_DOUBLE_QUOTE;
862
+ depth--;
863
+ }
864
+ }
865
+ }
823
866
  function classifyDoubles(items, style) {
824
- classifyEmptyDoublePairs(items);
867
+ classifyEmptyDoublePairs(items, style);
825
868
  classifyOpeningDoubles(items, style);
826
869
  classifyQuotedPunctuationOpeners(items);
827
870
  classifyBraceOpeners(items);
@@ -910,10 +953,10 @@ function applyRelocations(order, moves) {
910
953
  }
911
954
  return result;
912
955
  }
913
- const OPEN_BRACKETS = new Set(["(", "[", "{"]);
914
- const CLOSE_BRACKETS = new Set([")", "]", "}"]);
956
+ const OPEN_BRACKETS = new Set(OPENING_BRACKETS);
957
+ const CLOSE_BRACKETS = new Set(CLOSING_BRACKETS);
915
958
  /**
916
- * Unmatched open brackets (`(`, `[`, `{`) strictly before each item — a
959
+ * Unmatched open brackets (see {@link OPENING_BRACKETS}) strictly before each item — a
917
960
  * position is inside a bracket pair when its entry is > 0. Brackets never move
918
961
  * during placement, so the depths hold across the fixpoint's rounds. Boundary
919
962
  * items are transparent; a closer with no opener above it floors the depth at 0.
@@ -1388,6 +1431,8 @@ function queueRenderEdits(view, items, table) {
1388
1431
  }
1389
1432
  continue;
1390
1433
  }
1434
+ if (role === undefined && item.curlySource !== undefined)
1435
+ continue;
1391
1436
  // Fast path for ordinary characters; pre-labeled items may have changed
1392
1437
  // `ch` without gaining a role (German orphan closers) and must still diff.
1393
1438
  if (role === undefined && item.ch === text[item.start] && item.end - item.start === 1)
@@ -1413,6 +1458,8 @@ export function classifyAndRenderQuotes(view, style, apostrophe) {
1413
1458
  const items = buildItems(view, style);
1414
1459
  classifySingles(items, style);
1415
1460
  classifyDoubles(items, style);
1461
+ if (style === "german")
1462
+ closeCurlyOrphansBelowOpeners(items);
1416
1463
  const placed = applyPunctuationPlacement(items, style, apostrophe);
1417
1464
  // Placement can slide a closer past punctuation until it sits directly after
1418
1465
  // an s/S (british/french move the closer left, out of "dogs.'" → "dogs'."),