punctilio 3.7.5 → 3.8.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/README.md +1 -1
- package/dist/constants.d.ts +14 -48
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +25 -54
- package/dist/constants.js.map +1 -1
- package/dist/dashes.d.ts.map +1 -1
- package/dist/dashes.js +19 -7
- package/dist/dashes.js.map +1 -1
- package/dist/symbols.d.ts.map +1 -1
- package/dist/symbols.js +40 -15
- package/dist/symbols.js.map +1 -1
- package/package.json +3 -1
- package/src/constants.ts +27 -56
- package/src/dashes.ts +19 -7
- package/src/symbols.ts +40 -16
package/README.md
CHANGED
|
@@ -75,7 +75,7 @@ My [`benchmark.mjs`](https://github.com/alexander-turner/punctilio/blob/main/ben
|
|
|
75
75
|
|
|
76
76
|
## Test suite
|
|
77
77
|
|
|
78
|
-
Setting aside the benchmark, `punctilio`’s test suite runs at 100% branch coverage with well over a thousand tests, including edge cases derived from competitor libraries ([`smartquotes`](https://github.com/kellym/smartquotes.js), [`retext-smartypants`](https://github.com/retextjs/retext-smartypants), [`typograf`](https://github.com/typograf/typograf)) and the [Standard Ebooks typography manual](https://standardebooks.org/manual/). I also verify that all transformations are stable when applied multiple times.
|
|
78
|
+
Setting aside the benchmark, `punctilio`’s test suite runs at 100% branch coverage with well over a thousand tests, including edge cases derived from competitor libraries ([`smartquotes`](https://github.com/kellym/smartquotes.js), [`retext-smartypants`](https://github.com/retextjs/retext-smartypants), [`typograf`](https://github.com/typograf/typograf)) and the [Standard Ebooks typography manual](https://standardebooks.org/manual/). I also verify that all transformations are stable when applied multiple times. Uses [`recheck`](https://makenowjust-labs.github.io/recheck/) to statically verify the absence of inefficient RegEx patterns.
|
|
79
79
|
|
|
80
80
|
## Works with HTML DOMs via separation boundaries
|
|
81
81
|
|
package/dist/constants.d.ts
CHANGED
|
@@ -124,37 +124,19 @@ export declare function getEscapedSeparator(options: {
|
|
|
124
124
|
*/
|
|
125
125
|
export declare const REGEX_SPECIAL_CHARS: readonly [".", "*", "+", "?", "^", "$", "[", "]", "\\", "|", "(", ")"];
|
|
126
126
|
/**
|
|
127
|
-
*
|
|
127
|
+
* Marker-aware word boundary pattern for the START of a match.
|
|
128
128
|
*
|
|
129
|
-
* Standard `\b` can create false boundaries when separator markers appear
|
|
130
|
-
* word characters (e.g., `x\uE000ReLU` has a false
|
|
131
|
-
*
|
|
132
|
-
*
|
|
133
|
-
* by word characters followed by any number of markers.
|
|
134
|
-
*
|
|
135
|
-
* @param escapedSeparator - Regex-escaped separator string
|
|
136
|
-
* @returns Pattern string: `(?<!\w${sep}*)\b`
|
|
137
|
-
*
|
|
138
|
-
* @example
|
|
139
|
-
* const wb = wordBoundaryStart(ESCAPED_DEFAULT_SEPARATOR)
|
|
140
|
-
* // With text "x\uE000ReLU": \b would match before R, but wb won't
|
|
129
|
+
* Standard `\b` can create false boundaries when separator markers appear
|
|
130
|
+
* between word characters (e.g., `x\uE000ReLU` has a false `\b` before `R`).
|
|
131
|
+
* This pattern uses a negative lookbehind to reject matches preceded by a
|
|
132
|
+
* word character followed by up to `MAX_BOUNDARY_SEPARATORS` markers.
|
|
141
133
|
*/
|
|
142
134
|
export declare function wordBoundaryStart(escapedSeparator: string): string;
|
|
143
135
|
/**
|
|
144
|
-
*
|
|
145
|
-
*
|
|
146
|
-
* Standard `\b` can create false boundaries when separator markers appear between
|
|
147
|
-
* word characters (e.g., `1st\uE000ly` has a false boundary after `t`).
|
|
148
|
-
*
|
|
149
|
-
* This pattern uses a negative lookahead to reject matches that are followed
|
|
150
|
-
* by markers then word characters.
|
|
136
|
+
* Marker-aware word boundary pattern for the END of a match.
|
|
151
137
|
*
|
|
152
|
-
*
|
|
153
|
-
*
|
|
154
|
-
*
|
|
155
|
-
* @example
|
|
156
|
-
* const wbe = wordBoundaryEnd(ESCAPED_DEFAULT_SEPARATOR)
|
|
157
|
-
* // With text "1st\uE000ly": \b would match after t, but wbe won't
|
|
138
|
+
* Mirror of `wordBoundaryStart` \u2014 rejects matches followed by up to
|
|
139
|
+
* `MAX_BOUNDARY_SEPARATORS` markers and then a word character.
|
|
158
140
|
*/
|
|
159
141
|
export declare function wordBoundaryEnd(escapedSeparator: string): string;
|
|
160
142
|
/**
|
|
@@ -162,28 +144,6 @@ export declare function wordBoundaryEnd(escapedSeparator: string): string;
|
|
|
162
144
|
* and narrow no-break space). Use inside regex character classes: `[${SPACE_CHARS}]`
|
|
163
145
|
*/
|
|
164
146
|
export declare const SPACE_CHARS: string;
|
|
165
|
-
/**
|
|
166
|
-
* Creates a lookbehind pattern that matches after whitespace, separator, or start of string.
|
|
167
|
-
* Used for arrow patterns and other constructs that should appear at word boundaries.
|
|
168
|
-
*
|
|
169
|
-
* Uses alternation instead of a character class so that multi-character
|
|
170
|
-
* separators are matched as a sequence, not as individual characters.
|
|
171
|
-
*
|
|
172
|
-
* @param escapedSeparator - Regex-escaped separator string (may be grouped)
|
|
173
|
-
* @returns Pattern string: `(?<=\\s|${sep}|^)`
|
|
174
|
-
*/
|
|
175
|
-
export declare function spaceBoundaryStart(escapedSeparator: string): string;
|
|
176
|
-
/**
|
|
177
|
-
* Creates a lookahead pattern that matches before whitespace, separator, or end of string.
|
|
178
|
-
* Used for arrow patterns and other constructs that should appear at word boundaries.
|
|
179
|
-
*
|
|
180
|
-
* Uses alternation instead of a character class so that multi-character
|
|
181
|
-
* separators are matched as a sequence, not as individual characters.
|
|
182
|
-
*
|
|
183
|
-
* @param escapedSeparator - Regex-escaped separator string (may be grouped)
|
|
184
|
-
* @returns Pattern string: `(?=\\s|${sep}|$)`
|
|
185
|
-
*/
|
|
186
|
-
export declare function spaceBoundaryEnd(escapedSeparator: string): string;
|
|
187
147
|
/**
|
|
188
148
|
* Maximum recursion depth used by the rehype and remark tree walkers.
|
|
189
149
|
* Guards against stack overflow from maliciously or accidentally deep
|
|
@@ -207,6 +167,12 @@ export declare const MAX_REGEX_CACHE_SIZE = 1000;
|
|
|
207
167
|
* callers use `.test()` or `.exec()` on global-flag regexes.
|
|
208
168
|
*/
|
|
209
169
|
export declare function cachedRegExp(pattern: string, flags: string): RegExp;
|
|
170
|
+
/**
|
|
171
|
+
* Returns all currently cached RegExp objects. Exported for test
|
|
172
|
+
* introspection only (e.g. ReDoS scanning every compiled pattern).
|
|
173
|
+
* @internal
|
|
174
|
+
*/
|
|
175
|
+
export declare function getCachedRegExps(): RegExp[];
|
|
210
176
|
/**
|
|
211
177
|
* Clears the regex cache. Exported for test isolation only.
|
|
212
178
|
* @internal
|
package/dist/constants.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH;;GAEG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwElB,CAAA;AAEV;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,8HAYvB,CAAA;AAEV;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,aAAa,qGAAqG,CAAA;AAE/H;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,iBAAiB,CAAA;AAG/C;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAK3E;AAED;;;GAGG;AACH,eAAO,MAAM,mBAAmB,wEAAyE,CAAA;
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH;;GAEG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwElB,CAAA;AAEV;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,8HAYvB,CAAA;AAEV;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,aAAa,qGAAqG,CAAA;AAE/H;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,iBAAiB,CAAA;AAG/C;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAK3E;AAED;;;GAGG;AACH,eAAO,MAAM,mBAAmB,wEAAyE,CAAA;AAUzG;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,gBAAgB,EAAE,MAAM,GAAG,MAAM,CAElE;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,gBAAgB,EAAE,MAAM,GAAG,MAAM,CAEhE;AAED;;;GAGG;AACH,eAAO,MAAM,WAAW,QAAuD,CAAA;AAE/E;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,OAAO,CAAA;AAEvC;;;GAGG;AACH,eAAO,MAAM,UAAU,yDAAyD,CAAA;AAEhF;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,OAAO,CAAA;AAGxC;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CASnE;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,EAAE,CAE3C;AAED;;;GAGG;AACH,wBAAgB,eAAe,IAAI,IAAI,CAEtC"}
|
package/dist/constants.js
CHANGED
|
@@ -148,74 +148,37 @@ export function getEscapedSeparator(options) {
|
|
|
148
148
|
*/
|
|
149
149
|
export const REGEX_SPECIAL_CHARS = [".", "*", "+", "?", "^", "$", "[", "]", "\\", "|", "(", ")"];
|
|
150
150
|
/**
|
|
151
|
-
*
|
|
152
|
-
*
|
|
153
|
-
*
|
|
154
|
-
*
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
*
|
|
159
|
-
* @param escapedSeparator - Regex-escaped separator string
|
|
160
|
-
* @returns Pattern string: `(?<!\w${sep}*)\b`
|
|
151
|
+
* Maximum stack of adjacent separator markers tolerated in the boundary
|
|
152
|
+
* lookarounds. Three covers any realistic depth of nested HTML element
|
|
153
|
+
* boundaries; the bound also keeps the variable-width lookbehind in a
|
|
154
|
+
* range that static ReDoS analyzers can prove safe.
|
|
155
|
+
*/
|
|
156
|
+
const MAX_BOUNDARY_SEPARATORS = 3;
|
|
157
|
+
/**
|
|
158
|
+
* Marker-aware word boundary pattern for the START of a match.
|
|
161
159
|
*
|
|
162
|
-
*
|
|
163
|
-
*
|
|
164
|
-
*
|
|
160
|
+
* Standard `\b` can create false boundaries when separator markers appear
|
|
161
|
+
* between word characters (e.g., `x\uE000ReLU` has a false `\b` before `R`).
|
|
162
|
+
* This pattern uses a negative lookbehind to reject matches preceded by a
|
|
163
|
+
* word character followed by up to `MAX_BOUNDARY_SEPARATORS` markers.
|
|
165
164
|
*/
|
|
166
165
|
export function wordBoundaryStart(escapedSeparator) {
|
|
167
|
-
return `(?<!\\w${escapedSeparator}
|
|
166
|
+
return `(?<!\\w${escapedSeparator}{0,${MAX_BOUNDARY_SEPARATORS}})\\b`;
|
|
168
167
|
}
|
|
169
168
|
/**
|
|
170
|
-
*
|
|
171
|
-
*
|
|
172
|
-
* Standard `\b` can create false boundaries when separator markers appear between
|
|
173
|
-
* word characters (e.g., `1st\uE000ly` has a false boundary after `t`).
|
|
169
|
+
* Marker-aware word boundary pattern for the END of a match.
|
|
174
170
|
*
|
|
175
|
-
*
|
|
176
|
-
*
|
|
177
|
-
*
|
|
178
|
-
* @param escapedSeparator - Regex-escaped separator string
|
|
179
|
-
* @returns Pattern string: `\b(?!${sep}*\w)`
|
|
180
|
-
*
|
|
181
|
-
* @example
|
|
182
|
-
* const wbe = wordBoundaryEnd(ESCAPED_DEFAULT_SEPARATOR)
|
|
183
|
-
* // With text "1st\uE000ly": \b would match after t, but wbe won't
|
|
171
|
+
* Mirror of `wordBoundaryStart` \u2014 rejects matches followed by up to
|
|
172
|
+
* `MAX_BOUNDARY_SEPARATORS` markers and then a word character.
|
|
184
173
|
*/
|
|
185
174
|
export function wordBoundaryEnd(escapedSeparator) {
|
|
186
|
-
return `\\b(?!${escapedSeparator}
|
|
175
|
+
return `\\b(?!${escapedSeparator}{0,${MAX_BOUNDARY_SEPARATORS}}\\w)`;
|
|
187
176
|
}
|
|
188
177
|
/**
|
|
189
178
|
* Pattern string for space characters (regular space, tab, non-breaking space,
|
|
190
179
|
* and narrow no-break space). Use inside regex character classes: `[${SPACE_CHARS}]`
|
|
191
180
|
*/
|
|
192
181
|
export const SPACE_CHARS = ` \t${UNICODE_SYMBOLS.NBSP}${UNICODE_SYMBOLS.NNBSP}`;
|
|
193
|
-
/**
|
|
194
|
-
* Creates a lookbehind pattern that matches after whitespace, separator, or start of string.
|
|
195
|
-
* Used for arrow patterns and other constructs that should appear at word boundaries.
|
|
196
|
-
*
|
|
197
|
-
* Uses alternation instead of a character class so that multi-character
|
|
198
|
-
* separators are matched as a sequence, not as individual characters.
|
|
199
|
-
*
|
|
200
|
-
* @param escapedSeparator - Regex-escaped separator string (may be grouped)
|
|
201
|
-
* @returns Pattern string: `(?<=\\s|${sep}|^)`
|
|
202
|
-
*/
|
|
203
|
-
export function spaceBoundaryStart(escapedSeparator) {
|
|
204
|
-
return `(?<=\\s|${escapedSeparator}|^)`;
|
|
205
|
-
}
|
|
206
|
-
/**
|
|
207
|
-
* Creates a lookahead pattern that matches before whitespace, separator, or end of string.
|
|
208
|
-
* Used for arrow patterns and other constructs that should appear at word boundaries.
|
|
209
|
-
*
|
|
210
|
-
* Uses alternation instead of a character class so that multi-character
|
|
211
|
-
* separators are matched as a sequence, not as individual characters.
|
|
212
|
-
*
|
|
213
|
-
* @param escapedSeparator - Regex-escaped separator string (may be grouped)
|
|
214
|
-
* @returns Pattern string: `(?=\\s|${sep}|$)`
|
|
215
|
-
*/
|
|
216
|
-
export function spaceBoundaryEnd(escapedSeparator) {
|
|
217
|
-
return `(?=\\s|${escapedSeparator}|$)`;
|
|
218
|
-
}
|
|
219
182
|
/**
|
|
220
183
|
* Maximum recursion depth used by the rehype and remark tree walkers.
|
|
221
184
|
* Guards against stack overflow from maliciously or accidentally deep
|
|
@@ -249,6 +212,14 @@ export function cachedRegExp(pattern, flags) {
|
|
|
249
212
|
re.lastIndex = 0;
|
|
250
213
|
return re;
|
|
251
214
|
}
|
|
215
|
+
/**
|
|
216
|
+
* Returns all currently cached RegExp objects. Exported for test
|
|
217
|
+
* introspection only (e.g. ReDoS scanning every compiled pattern).
|
|
218
|
+
* @internal
|
|
219
|
+
*/
|
|
220
|
+
export function getCachedRegExps() {
|
|
221
|
+
return Array.from(regexCache.values());
|
|
222
|
+
}
|
|
252
223
|
/**
|
|
253
224
|
* Clears the regex cache. Exported for test isolation only.
|
|
254
225
|
* @internal
|
package/dist/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}
|
package/dist/dashes.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dashes.d.ts","sourceRoot":"","sources":["../src/dashes.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,MAAM,MAAM,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,MAAM,CAAA;AAEvD,MAAM,WAAW,WAAW;IAC1B,2EAA2E;IAC3E,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,mFAAmF;IACnF,SAAS,CAAC,EAAE,SAAS,CAAA;CACtB;AAID;;;;GAIG;AACH,eAAO,MAAM,6BAA6B,+BAA0C,CAAA;AAYpF,eAAO,MAAM,MAAM,QAMR,CAAA;AAEX,8DAA8D;AAC9D,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,WAAgB,GAAG,MAAM,CA2DjF;AAED,iFAAiF;AACjF,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,WAAgB,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"dashes.d.ts","sourceRoot":"","sources":["../src/dashes.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,MAAM,MAAM,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,MAAM,CAAA;AAEvD,MAAM,WAAW,WAAW;IAC1B,2EAA2E;IAC3E,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,mFAAmF;IACnF,SAAS,CAAC,EAAE,SAAS,CAAA;CACtB;AAID;;;;GAIG;AACH,eAAO,MAAM,6BAA6B,+BAA0C,CAAA;AAYpF,eAAO,MAAM,MAAM,QAMR,CAAA;AAEX,8DAA8D;AAC9D,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,WAAgB,GAAG,MAAM,CA2DjF;AAED,iFAAiF;AACjF,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,WAAgB,GAAG,MAAM,CAoB/E;AAED,8EAA8E;AAC9E,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,WAAgB,GAAG,MAAM,CAkC5E;AAiFD,gCAAgC;AAChC,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,WAAgB,GAAG,MAAM,CAU7E"}
|
package/dist/dashes.js
CHANGED
|
@@ -84,7 +84,12 @@ export function enDashDateRange(text, options = {}) {
|
|
|
84
84
|
const chr = getEscapedSeparator(options);
|
|
85
85
|
const wb = wordBoundaryStart(chr);
|
|
86
86
|
const wbe = wordBoundaryEnd(chr);
|
|
87
|
-
|
|
87
|
+
// Atomic-optional year groups (lookahead + backref). The capture inside
|
|
88
|
+
// the lookahead is locked in once matched, so the year group commits
|
|
89
|
+
// without backtracking.
|
|
90
|
+
const startYear = `(?=(?<startYear>${chr}? \\d{4})?)\\k<startYear>`;
|
|
91
|
+
const endYear = `(?=(?<endYear> \\d{4})?)\\k<endYear>`;
|
|
92
|
+
return text.replace(cachedRegExp(`${wb}(?<startMonth>${months})${startYear}(?<preSep>${chr}?)(?<preSpace> ?)-(?<postSpace> ?)(?<postSep>${chr}?)(?<endMonth>${months})${endYear}${wbe}`, "g"), (...args) => {
|
|
88
93
|
const groups = args.at(-1);
|
|
89
94
|
const [pre, post] = dashStyle === "british" ? [" ", " "] : ["", ""];
|
|
90
95
|
return `${groups.startMonth}${groups.startYear || ""}${groups.preSep}${pre}${EN_DASH}${post}${groups.postSep}${groups.endMonth}${groups.endYear || ""}`;
|
|
@@ -122,11 +127,17 @@ function convertParentheticalDashes(text, sep, style) {
|
|
|
122
127
|
// A single plain hyphen directly before a word character (through optional separators) is a
|
|
123
128
|
// suspended/hanging hyphen ("Yes-men and -women"), not a parenthetical dash — skip it.
|
|
124
129
|
// Em/en dashes and multiple hyphens can have zero trailing spaces.
|
|
125
|
-
|
|
130
|
+
// `sepAfter` and `trailing` share one optional unit so a whitespace run
|
|
131
|
+
// can only be assigned to it as a whole, keeping the match unambiguous.
|
|
132
|
+
const spacedDashPattern = cachedRegExp(`(?<=[^\\s]|^)(?<sepBefore>${escapedSep}?)[ ]+(?:[${EN_DASH}${EM_DASH}][-${EN_DASH}${EM_DASH}]*|-{2,}|-(?!${escapedSep}*[${LATIN_LETTERS}\\d]))(?!-*>)[ ]*(?:(?<sepAfter>${escapedSep})(?<trailing>[ ]*))?(?=\\S|$)`, "g");
|
|
126
133
|
text = text.replace(spacedDashPattern, (_match, sepBefore, sepAfter, trailing) => {
|
|
127
|
-
//
|
|
128
|
-
|
|
129
|
-
|
|
134
|
+
// sepAfter and trailing are undefined when the optional group didn't match.
|
|
135
|
+
sepAfter = sepAfter ?? "";
|
|
136
|
+
trailing = trailing ?? "";
|
|
137
|
+
// Trailing space after a separator belongs to the next text node — keep it
|
|
138
|
+
// regardless of style. Without a separator, the trailing space is part of
|
|
139
|
+
// the current node's whitespace around the dash and gets consumed.
|
|
140
|
+
const keepTrailing = sepAfter ? trailing : "";
|
|
130
141
|
return `${sepBefore}${maybeSpace}${localizedDash}${maybeSpace}${sepAfter}${keepTrailing}`;
|
|
131
142
|
});
|
|
132
143
|
// Convert dashes at text node boundaries: separator alone precedes dash (e.g., "word{sep}– rest")
|
|
@@ -152,8 +163,9 @@ function convertParentheticalDashes(text, sep, style) {
|
|
|
152
163
|
*/
|
|
153
164
|
function normalizeEmDashSpacing(text, sep) {
|
|
154
165
|
const escapedSep = getEscapedSeparator({ separator: sep });
|
|
155
|
-
// Remove all spaces around em-dashes
|
|
156
|
-
|
|
166
|
+
// Remove all spaces around em-dashes. The `\S|^` / `\S|$` boundary
|
|
167
|
+
// anchors restrict the match to dashes adjacent to non-whitespace.
|
|
168
|
+
text = text.replace(cachedRegExp(`(?<=\\S|^)(?<before>${escapedSep}?)[ ]*${EM_DASH}[ ]*(?<after>${escapedSep}?)(?=\\S|$)`, "g"), `$<before>${EM_DASH}$<after>`);
|
|
157
169
|
// Preserve space after em-dash at start of line (e.g., attribution)
|
|
158
170
|
text = text.replace(cachedRegExp(`^(?<sep>${escapedSep}?)${EM_DASH}(?<after>[A-Z0-9])`, "gm"), `$<sep>${EM_DASH} $<after>`);
|
|
159
171
|
return text;
|
package/dist/dashes.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dashes.js","sourceRoot":"","sources":["../src/dashes.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"dashes.js","sourceRoot":"","sources":["../src/dashes.ts"],"names":[],"mappings":"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"}
|
package/dist/symbols.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"symbols.d.ts","sourceRoot":"","sources":["../src/symbols.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,MAAM,WAAW,aAAa;IAC5B,2EAA2E;IAC3E,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,uDAAuD;IACvD,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB;AA6BD,uCAAuC;AACvC,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"symbols.d.ts","sourceRoot":"","sources":["../src/symbols.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,MAAM,WAAW,aAAa;IAC5B,2EAA2E;IAC3E,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,uDAAuD;IACvD,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB;AA6BD,uCAAuC;AACvC,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,MAAM,CAiB1E;AAED,gDAAgD;AAChD,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,MAAM,CAsEhF;AAmBD,0DAA0D;AAC1D,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,MAAM,CAc7E;AAgDD,yCAAyC;AACzC,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,MAAM,CAsB9E;AAkBD,oCAAoC;AACpC,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,MAAM,CAcxE;AAED,kFAAkF;AAClF,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,MAAM,CAazE;AA2FD,sEAAsE;AACtE,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,MAAM,CAe5E;AA6BD,0EAA0E;AAC1E,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,MAAM,CA2B3E;AASD,0DAA0D;AAC1D,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,MAAM,CAgBpF;AAED,+RAA+R;AAC/R,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMnD;AAiBD,iFAAiF;AACjF,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,MAAM,CAiBtF;AAED,gFAAgF;AAChF,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,MAAM,CASjF"}
|
package/dist/symbols.js
CHANGED
|
@@ -1,14 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Symbol transformations: ellipses, multiplication, math symbols, arrows.
|
|
3
3
|
*/
|
|
4
|
-
import { UNICODE_SYMBOLS, DEFAULT_SEPARATOR, LATIN_LETTERS, wordBoundaryEnd, SPACE_CHARS,
|
|
4
|
+
import { UNICODE_SYMBOLS, DEFAULT_SEPARATOR, LATIN_LETTERS, wordBoundaryEnd, SPACE_CHARS, cachedRegExp, getEscapedSeparator } from "./constants.js";
|
|
5
5
|
const { ELLIPSIS, MULTIPLICATION, NOT_EQUAL, PLUS_MINUS, COPYRIGHT, REGISTERED, TRADEMARK, DEGREE, ARROW_RIGHT, ARROW_LEFT, ARROW_LEFT_RIGHT, APPROXIMATE, LESS_EQUAL, GREATER_EQUAL, NBSP, PRIME, DOUBLE_PRIME, SUPERSCRIPT_ST, SUPERSCRIPT_ND, SUPERSCRIPT_RD, SUPERSCRIPT_TH, DOUBLE_QUESTION, QUESTION_EXCLAMATION, EXCLAMATION_QUESTION, } = UNICODE_SYMBOLS;
|
|
6
6
|
/** Convert "..." or ". . ." to "…". */
|
|
7
7
|
export function ellipsis(text, options = {}) {
|
|
8
8
|
const chr = getEscapedSeparator(options);
|
|
9
9
|
// Convert consecutive or spaced dots: ... or . . . → …
|
|
10
|
-
//
|
|
11
|
-
|
|
10
|
+
// Each gap allows EITHER a space (same-text-node spaced dots) OR a separator
|
|
11
|
+
// (cross-boundary contiguous dots), but never both — a space adjacent to a
|
|
12
|
+
// separator means the dots straddle a text-node boundary and shouldn't fold
|
|
13
|
+
// into one ellipsis.
|
|
14
|
+
const pattern = cachedRegExp(`\\.(?:[${SPACE_CHARS}]|(?<sep1>${chr}))?\\.(?:[${SPACE_CHARS}]?|(?<sep2>${chr})?)\\.`, "g");
|
|
12
15
|
text = text.replace(pattern, (...args) => {
|
|
13
16
|
const { sep1, sep2 } = args.at(-1);
|
|
14
17
|
return ELLIPSIS + (sep1 ?? "") + (sep2 ?? "");
|
|
@@ -54,7 +57,10 @@ export function multiplication(text, options = {}) {
|
|
|
54
57
|
// Consuming the digit-suffix as part of each segment keeps the inner
|
|
55
58
|
// replace from misreading the `x` inside a trailing unit like `px` as
|
|
56
59
|
// another operator.
|
|
57
|
-
|
|
60
|
+
// Sticky flag (`y`) anchors each segment at the previous one's end.
|
|
61
|
+
// `rest` always starts with a chain segment from the outer match, so
|
|
62
|
+
// the engine never tries multiple start positions across whitespace.
|
|
63
|
+
const converted = rest.replace(cachedRegExp(`(?<pre>${chr}?)(?<spaceBefore>\\s*)[xX*](?<spaceAfter>\\s*)(?<post>${chr}?)(?<num>\\d+${digitSuffix})`, "gy"), (...innerArgs) => {
|
|
58
64
|
const groups = innerArgs.at(-1);
|
|
59
65
|
const space = groups.spaceBefore || groups.spaceAfter ? " " : "";
|
|
60
66
|
return `${groups.pre}${space}${MULTIPLICATION}${space}${groups.post}${groups.num}`;
|
|
@@ -89,8 +95,14 @@ const MATH_SYMBOL_MAP = [
|
|
|
89
95
|
export function mathSymbols(text, options = {}) {
|
|
90
96
|
const chr = getEscapedSeparator(options);
|
|
91
97
|
for (const [left, right, lookahead, replacement] of MATH_SYMBOL_MAP) {
|
|
92
|
-
|
|
93
|
-
|
|
98
|
+
// Capture an optional separator between left and right so a cross-boundary
|
|
99
|
+
// match (e.g., `!<SEP>=`) re-emits the separator alongside the replacement
|
|
100
|
+
// and preserves the text-node-count invariant in transformTextNodes.
|
|
101
|
+
const pattern = cachedRegExp(`${left}(?<sep>${chr})?${right}${lookahead}`, "g");
|
|
102
|
+
text = text.replace(pattern, (...args) => {
|
|
103
|
+
const { sep } = args.at(-1);
|
|
104
|
+
return `${replacement}${sep ?? ""}`;
|
|
105
|
+
});
|
|
94
106
|
}
|
|
95
107
|
return text;
|
|
96
108
|
}
|
|
@@ -102,7 +114,12 @@ export function mathSymbols(text, options = {}) {
|
|
|
102
114
|
*/
|
|
103
115
|
const LEGAL_SYMBOL_CONTEXT_WINDOW = 25;
|
|
104
116
|
/** Returns true when the context window ends with a path-like fragment (slash + non-whitespace). */
|
|
105
|
-
const isPathContext = (before) =>
|
|
117
|
+
const isPathContext = (before) => {
|
|
118
|
+
const parts = before.split(/\s+/);
|
|
119
|
+
const trailing = parts[parts.length - 1];
|
|
120
|
+
const slashIdx = trailing.indexOf("/");
|
|
121
|
+
return slashIdx >= 0 && slashIdx < trailing.length - 1;
|
|
122
|
+
};
|
|
106
123
|
/**
|
|
107
124
|
* Context-aware replacement for legal symbols like (c), (r), (tm).
|
|
108
125
|
* Extracts surrounding text, strips separator characters from the context
|
|
@@ -146,11 +163,14 @@ const ARROW_RULES = [
|
|
|
146
163
|
/** Convert -> and <-> to arrows. */
|
|
147
164
|
export function arrows(text, options = {}) {
|
|
148
165
|
const chr = getEscapedSeparator(options);
|
|
149
|
-
|
|
150
|
-
|
|
166
|
+
// Boundary on the left is a capturing group rather than a lookbehind so
|
|
167
|
+
// the alternation stays out of the assertion (recheck-safe); `$1` re-emits
|
|
168
|
+
// the captured boundary char in the replacement.
|
|
169
|
+
const startBoundary = `(^|\\s|${chr})`;
|
|
170
|
+
const endBoundary = `(?=\\s|${chr}|$)`;
|
|
151
171
|
for (const [buildArrow, replacement] of ARROW_RULES) {
|
|
152
|
-
const pattern = cachedRegExp(`${
|
|
153
|
-
text = text.replace(pattern, replacement);
|
|
172
|
+
const pattern = cachedRegExp(`${startBoundary}${buildArrow(chr)}${endBoundary}`, "g");
|
|
173
|
+
text = text.replace(pattern, `$1${replacement}`);
|
|
154
174
|
}
|
|
155
175
|
return text;
|
|
156
176
|
}
|
|
@@ -341,11 +361,16 @@ const PUNCTUATION_LIGATURE_MAP = [
|
|
|
341
361
|
/** Convert ?? to ⁇, ?! to ⁈, !? to ⁉. Poor font support, disabled by default. */
|
|
342
362
|
export function punctuationLigatures(text, options = {}) {
|
|
343
363
|
const chr = getEscapedSeparator(options);
|
|
364
|
+
const sepPattern = cachedRegExp(chr, "g");
|
|
344
365
|
for (const [first, repeated, replacement] of PUNCTUATION_LIGATURE_MAP) {
|
|
345
|
-
const pattern = cachedRegExp(`${first}(
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
366
|
+
const pattern = cachedRegExp(`${first}(?:${chr}?${repeated})+`, "g");
|
|
367
|
+
// Re-emit every separator that fell inside the match. The repeat group
|
|
368
|
+
// can swallow more than one (e.g. across 3+ split text nodes), and
|
|
369
|
+
// dropping any of them breaks transformTextNodes's text-node-count
|
|
370
|
+
// invariant.
|
|
371
|
+
text = text.replace(pattern, (match) => {
|
|
372
|
+
const seps = match.match(sepPattern) ?? [];
|
|
373
|
+
return replacement + seps.join("");
|
|
349
374
|
});
|
|
350
375
|
}
|
|
351
376
|
return text;
|
package/dist/symbols.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"symbols.js","sourceRoot":"","sources":["../src/symbols.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,aAAa,EAAE,eAAe,EAAE,WAAW,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AASzL,MAAM,EACJ,QAAQ,EACR,cAAc,EACd,SAAS,EACT,UAAU,EACV,SAAS,EACT,UAAU,EACV,SAAS,EACT,MAAM,EACN,WAAW,EACX,UAAU,EACV,gBAAgB,EAChB,WAAW,EACX,UAAU,EACV,aAAa,EACb,IAAI,EACJ,KAAK,EACL,YAAY,EACZ,cAAc,EACd,cAAc,EACd,cAAc,EACd,cAAc,EACd,eAAe,EACf,oBAAoB,EACpB,oBAAoB,GACrB,GAAG,eAAe,CAAA;AAEnB,uCAAuC;AACvC,MAAM,UAAU,QAAQ,CAAC,IAAY,EAAE,UAAyB,EAAE;IAChE,MAAM,GAAG,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAA;IAExC,uDAAuD;IACvD,gDAAgD;IAChD,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,WAAW,aAAa,GAAG,YAAY,WAAW,cAAc,GAAG,OAAO,EAAE,GAAG,CAAC,CAAA;IACpH,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE;QACvC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAuC,CAAA;QACxE,OAAO,QAAQ,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAA;IAC/C,CAAC,CAAC,CAAA;IAEF,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,QAAQ,OAAO,aAAa,OAAO,EAAE,IAAI,CAAC,EAAE,GAAG,QAAQ,GAAG,CAAC,CAAA;IAE/F,OAAO,IAAI,CAAA;AACb,CAAC;AAED,gDAAgD;AAChD,MAAM,UAAU,cAAc,CAAC,IAAY,EAAE,UAAyB,EAAE;IACtE,MAAM,GAAG,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAA;IAExC,yEAAyE;IACzE,2EAA2E;IAC3E,0EAA0E;IAC1E,0DAA0D;IAC1D,EAAE;IACF,kEAAkE;IAClE,2EAA2E;IAC3E,uEAAuE;IACvE,4CAA4C;IAC5C,MAAM,cAAc,GAAG,iDAAiD,CAAA;IACxE,sEAAsE;IACtE,mEAAmE;IACnE,oEAAoE;IACpE,iDAAiD;IACjD,MAAM,YAAY,GAAG,UAAU,GAAG,kBAAkB,CAAA;IACpD,MAAM,OAAO,GAAG,UAAU,GAAG,QAAQ,cAAc,IAAI,YAAY,EAAE,CAAA;IACrE,MAAM,QAAQ,GAAG,GAAG,GAAG,KAAK,KAAK,GAAG,YAAY,GAAG,CAAA;IACnD,MAAM,WAAW,GAAG,MAAM,QAAQ,IAAI,OAAO,IAAI,CAAA;IAEjD,yEAAyE;IACzE,0EAA0E;IAC1E,yEAAyE;IACzE,4EAA4E;IAC5E,yEAAyE;IACzE,0EAA0E;IAC1E,2BAA2B;IAC3B,MAAM,YAAY,GAAG,YAAY,CAC/B,oBAAoB,aAAa,wBAAwB,WAAW,eAAe,GAAG,iBAAiB,GAAG,QAAQ,WAAW,KAAK,EAClI,GAAG,CACJ,CAAA;IAED,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE;QAC5C,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAA2B,CAAA;QAChE,mCAAmC;QACnC,IAAI,QAAQ,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC,CAAC,CAAW,CAAA;QAElE,kEAAkE;QAClE,qEAAqE;QACrE,sEAAsE;QACtE,oBAAoB;QACpB,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAC5B,YAAY,CACV,UAAU,GAAG,yDAAyD,GAAG,gBAAgB,WAAW,GAAG,EACvG,GAAG,CACJ,EACD,CAAC,GAAG,SAAS,EAAE,EAAE;YACf,MAAM,MAAM,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAA2B,CAAA;YACzD,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAA;YAChE,OAAO,GAAG,MAAM,CAAC,GAAG,GAAG,KAAK,GAAG,cAAc,GAAG,KAAK,GAAG,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,GAAG,EAAE,CAAA;QACpF,CAAC,CACF,CAAA;QACD,OAAO,GAAG,QAAQ,GAAG,SAAS,EAAE,CAAA;IAClC,CAAC,CAAC,CAAA;IAEF,iFAAiF;IACjF,MAAM,GAAG,GAAG,eAAe,CAAC,GAAG,CAAC,CAAA;IAChC,MAAM,eAAe,GAAG,YAAY,CAAC,oBAAoB,aAAa,mBAAmB,GAAG,UAAU,GAAG,EAAE,EAAE,GAAG,CAAC,CAAA;IACjH,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC,KAAK,EAAE,GAAW,EAAE,EAAE;QAC1D,+CAA+C;QAC/C,IAAI,GAAG,KAAK,GAAG;YAAE,OAAO,KAAK,CAAA;QAC7B,OAAO,GAAG,GAAG,GAAG,cAAc,EAAE,CAAA;IAClC,CAAC,CAAC,CAAA;IAEF,OAAO,IAAI,CAAA;AACb,CAAC;AAKD;;;GAGG;AACH,MAAM,eAAe,GAAqB;IACxC,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,SAAS,CAAC;IAC9B,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE,UAAU,CAAC;IAC7B,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,UAAU,CAAC;IAC5B,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,UAAU,CAAC;IAC/B,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,aAAa,CAAC;IAClC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,WAAW,CAAC;IAC3B,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,WAAW,CAAC;CAC5B,CAAA;AAED,0DAA0D;AAC1D,MAAM,UAAU,WAAW,CAAC,IAAY,EAAE,UAAyB,EAAE;IACnE,MAAM,GAAG,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAA;IAExC,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC,IAAI,eAAe,EAAE,CAAC;QACpE,MAAM,OAAO,GAAG,YAAY,CAAC,GAAG,IAAI,GAAG,GAAG,IAAI,KAAK,GAAG,SAAS,EAAE,EAAE,GAAG,CAAC,CAAA;QACvE,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,WAAW,CAAC,CAAA;IAC3C,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAKD;;;;;GAKG;AACH,MAAM,2BAA2B,GAAG,EAAE,CAAA;AAEtC,oGAAoG;AACpG,MAAM,aAAa,GAAG,CAAC,MAAc,EAAW,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;AAExE;;;;GAIG;AACH,SAAS,wBAAwB,CAC/B,IAAY,EACZ,OAAe,EACf,WAAmB,EACnB,aAA+B,EAC/B,SAAiB;IAEjB,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,KAAa,EAAE,MAAc,EAAE,GAAW,EAAE,EAAE;QAC1E,MAAM,MAAM,GAAG,GAAG;aACf,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,2BAA2B,CAAC,EAAE,MAAM,CAAC;aAChE,UAAU,CAAC,SAAS,EAAE,EAAE,CAAC,CAAA;QAC5B,MAAM,KAAK,GAAG,GAAG;aACd,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,2BAA2B,CAAC;aACjF,UAAU,CAAC,SAAS,EAAE,EAAE,CAAC,CAAA;QAC5B,OAAO,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAA;IAC3D,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,kBAAkB,GAAG,SAAS,CAAA;AACpC,MAAM,mBAAmB,GAAG,SAAS,CAAA;AACrC,MAAM,kBAAkB,GAAG,UAAU,CAAA;AAErC,yCAAyC;AACzC,MAAM,UAAU,YAAY,CAAC,IAAY,EAAE,UAAyB,EAAE;IACpE,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,iBAAiB,CAAA;IACxD,8EAA8E;IAC9E,wDAAwD;IACxD,IAAI,GAAG,wBAAwB,CAAC,IAAI,EAAE,kBAAkB,EAAE,SAAS,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CACrF,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EACjG,SAAS,CACV,CAAA;IAED,qFAAqF;IACrF,IAAI,GAAG,wBAAwB,CAAC,IAAI,EAAE,mBAAmB,EAAE,UAAU,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CACvF,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EACpF,SAAS,CACV,CAAA;IAED,oCAAoC;IACpC,IAAI,GAAG,wBAAwB,CAAC,IAAI,EAAE,kBAAkB,EAAE,SAAS,EAAE,CAAC,MAAM,EAAE,EAAE,CAC9E,CAAC,aAAa,CAAC,MAAM,CAAC,EACtB,SAAS,CACV,CAAA;IAED,OAAO,IAAI,CAAA;AACb,CAAC;AAQD,wDAAwD;AACxD,MAAM,WAAW,GAA6C;IAC5D,qEAAqE;IACrE,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,GAAG,IAAI,EAAE,gBAAgB,CAAC;IAC1C,mBAAmB;IACnB,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC;IAC1B,kBAAkB;IAClB,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC;CAC1B,CAAA;AAED,oCAAoC;AACpC,MAAM,UAAU,MAAM,CAAC,IAAY,EAAE,UAAyB,EAAE;IAC9D,MAAM,GAAG,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAA;IAExC,MAAM,KAAK,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAA;IACrC,MAAM,GAAG,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAA;IAEjC,KAAK,MAAM,CAAC,UAAU,EAAE,WAAW,CAAC,IAAI,WAAW,EAAE,CAAC;QACpD,MAAM,OAAO,GAAG,YAAY,CAAC,GAAG,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,GAAG,EAAE,EAAE,GAAG,CAAC,CAAA;QACrE,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,WAAW,CAAC,CAAA;IAC3C,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,OAAO,CAAC,IAAY,EAAE,UAAyB,EAAE;IAC/D,MAAM,GAAG,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAA;IAExC,iEAAiE;IACjE,2CAA2C;IAC3C,2EAA2E;IAC3E,MAAM,GAAG,GAAG,eAAe,CAAC,GAAG,CAAC,CAAA;IAChC,yEAAyE;IACzE,MAAM,WAAW,GAAG,QAAQ,aAAa,SAAS,CAAA;IAClD,OAAO,IAAI,CAAC,OAAO,CACjB,YAAY,CAAC,aAAa,GAAG,oBAAoB,WAAW,GAAG,GAAG,EAAE,EAAE,GAAG,CAAC,EAC1E,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,MAAM,GAAG,IAAI,EAAE,CAC5C,CAAA;AACH,CAAC;AAED;;;;;;GAMG;AACH,SAAS,+BAA+B,CACtC,YAAoB,EACpB,gBAAwB;IAExB,MAAM,cAAc,GAAG,uBAAuB,gBAAgB,KAAK,YAAY,eAAe,gBAAgB,SAAS,aAAa,IAAI,CAAA;IACxI,MAAM,WAAW,GAAG,QAAQ,aAAa,IAAI,gBAAgB,oBAAoB,YAAY,OAAO,gBAAgB,KAAK,aAAa,IAAI,CAAA;IAC1I,MAAM,kBAAkB,GAAG,QAAQ,aAAa,IAAI,gBAAgB,iBAAiB,YAAY,GAAG,CAAA;IACpG,MAAM,SAAS,GAAG,YAAY,CAAA;IAC9B,OAAO,YAAY,CACjB,GAAG,cAAc,IAAI,WAAW,IAAI,kBAAkB,IAAI,SAAS,EAAE,EACrE,GAAG,CACJ,CAAA;AACH,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,SAAS,qBAAqB,CAAC,SAAiB,EAAE,gBAAwB;IACxE,yEAAyE;IACzE,yEAAyE;IACzE,0EAA0E;IAC1E,MAAM,iBAAiB,GAAG,SAAS,KAAK,YAAY;QAClD,CAAC,CAAC,YAAY,CAAC,GAAG,KAAK,MAAM,gBAAgB,SAAS,EAAE,EAAE,CAAC;QAC3D,CAAC,CAAC,IAAI,CAAA;IAER,IAAI,OAAO,GAAG,CAAC,CAAA;IAEf,0EAA0E;IAC1E,OAAO,CAAC,GAAG,IAAe,EAAU,EAAE;QACpC,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,CAAW,CAAA;QACnC,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAuC,CAAA;QAEhE,uDAAuD;QACvD,IAAI,MAAM,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;YACrC,OAAO,SAAS,CAAA;QAClB,CAAC;QAED,uFAAuF;QACvF,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YAClC,IAAI,OAAO,GAAG,CAAC;gBAAE,OAAO,EAAE,CAAA;YAC1B,OAAO,SAAS,CAAA;QAClB,CAAC;QAED,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAA;QACvC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,8DAA8D;YAC9D,IAAI,OAAO,IAAI,CAAC,EAAE,CAAC;gBACjB,OAAO,GAAG,KAAK,GAAG,GAAG,GAAG,SAAS,GAAG,QAAQ,EAAE,CAAA;YAChD,CAAC;YACD,gEAAgE;YAChE,uDAAuD;YACvD,IAAI,iBAAiB,EAAE,CAAC;gBACtB,MAAM,WAAW,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAW,CAAA;gBACzC,MAAM,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAW,CAAA;gBACxC,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC;oBACjE,OAAO,GAAG,KAAK,GAAG,GAAG,GAAG,SAAS,GAAG,QAAQ,EAAE,CAAA;gBAChD,CAAC;YACH,CAAC;YACD,OAAO,EAAE,CAAA;YACT,OAAO,SAAS,CAAA;QAClB,CAAC;QAED,yDAAyD;QACzD,IAAI,OAAO,IAAI,CAAC,EAAE,CAAC;YACjB,OAAO,GAAG,CAAC,CAAA;QACb,CAAC;aAAM,CAAC;YACN,OAAO,EAAE,CAAA;QACX,CAAC;QACD,OAAO,SAAS,CAAA;IAClB,CAAC,CAAA;AACH,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,UAAU,CAAC,IAAY,EAAE,UAAyB,EAAE;IAClE,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAA;IAErD,MAAM,eAAe,GAAuB;QAC1C,CAAC,GAAG,EAAE,KAAK,CAAC;QACZ,CAAC,GAAG,EAAE,YAAY,CAAC;KACpB,CAAA;IAED,KAAK,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,eAAe,EAAE,CAAC;QACjD,0EAA0E;QAC1E,MAAM,OAAO,GAAG,+BAA+B,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAA;QACxE,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,qBAAqB,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC,CAAA;IAClF,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC;AAKD;;;GAGG;AACH,MAAM,eAAe,GAAmB;IACtC,CAAC,GAAG,EAAE,GAAG,EAAE,eAAe,CAAC,YAAY,CAAC;IACxC,CAAC,GAAG,EAAE,GAAG,EAAE,eAAe,CAAC,YAAY,CAAC;IACxC,CAAC,GAAG,EAAE,GAAG,EAAE,eAAe,CAAC,YAAY,CAAC;IACxC,CAAC,GAAG,EAAE,GAAG,EAAE,eAAe,CAAC,YAAY,CAAC;IACxC,CAAC,GAAG,EAAE,GAAG,EAAE,eAAe,CAAC,YAAY,CAAC;IACxC,CAAC,GAAG,EAAE,GAAG,EAAE,eAAe,CAAC,YAAY,CAAC;IACxC,CAAC,GAAG,EAAE,GAAG,EAAE,eAAe,CAAC,YAAY,CAAC;IACxC,CAAC,GAAG,EAAE,GAAG,EAAE,eAAe,CAAC,YAAY,CAAC;IACxC,CAAC,GAAG,EAAE,GAAG,EAAE,eAAe,CAAC,YAAY,CAAC;IACxC,CAAC,GAAG,EAAE,GAAG,EAAE,eAAe,CAAC,YAAY,CAAC;IACxC,CAAC,GAAG,EAAE,GAAG,EAAE,eAAe,CAAC,YAAY,CAAC;IACxC,CAAC,GAAG,EAAE,GAAG,EAAE,eAAe,CAAC,YAAY,CAAC;IACxC,CAAC,GAAG,EAAE,GAAG,EAAE,eAAe,CAAC,YAAY,CAAC;IACxC,CAAC,GAAG,EAAE,GAAG,EAAE,eAAe,CAAC,YAAY,CAAC;IACxC,CAAC,GAAG,EAAE,GAAG,EAAE,eAAe,CAAC,YAAY,CAAC;CACzC,CAAA;AAED,MAAM,YAAY,GAAG,MAAM,CAAC,WAAW,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;AAE7F,0EAA0E;AAC1E,MAAM,UAAU,SAAS,CAAC,IAAY,EAAE,UAAyB,EAAE;IACjE,MAAM,GAAG,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAA;IAExC,oFAAoF;IACpF,kEAAkE;IAClE,MAAM,eAAe,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CACrD,GAAG,CAAC,GAAG,GAAG,KAAK,GAAG,IAAI,CAAC,EAAE,CAC1B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAEX,iEAAiE;IACjE,+EAA+E;IAC/E,MAAM,OAAO,GAAG,YAAY,CAC1B,oBAAoB,eAAe,oBAAoB,EACvD,GAAG,CACJ,CAAA;IAED,MAAM,UAAU,GAAG,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;IAEzC,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;QACrC,uEAAuE;QACvE,kFAAkF;QAClF,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;QACrC,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAC1B,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,CAAA;QAChD,0EAA0E;QAC1E,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAA;IAC3E,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,WAAW,GAA2B;IAC1C,EAAE,EAAE,cAAc;IAClB,EAAE,EAAE,cAAc;IAClB,EAAE,EAAE,cAAc;IAClB,EAAE,EAAE,cAAc;CACnB,CAAA;AAED,0DAA0D;AAC1D,MAAM,UAAU,kBAAkB,CAAC,IAAY,EAAE,UAAyB,EAAE;IAC1E,MAAM,GAAG,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAA;IAExC,sEAAsE;IACtE,+CAA+C;IAC/C,uEAAuE;IACvE,MAAM,GAAG,GAAG,eAAe,CAAC,GAAG,CAAC,CAAA;IAChC,MAAM,OAAO,GAAG,YAAY,CAC1B,aAAa,GAAG,2BAA2B,GAAG,EAAE,EAChD,IAAI,CACL,CAAA;IAED,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE;QACnD,MAAM,iBAAiB,GAAG,WAAW,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAA;QAC3D,OAAO,GAAG,GAAG,iBAAiB,CAAA;IAChC,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,+RAA+R;AAC/R,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,YAAY,WAAW,MAAM,WAAW,OAAO,EAAE,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE;QAChG,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAA;QACrC,IAAI,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC;YAAE,OAAO,eAAe,CAAC,KAAK,CAAA;QACvE,OAAO,GAAG,CAAA;IACZ,CAAC,CAAC,CAAA;AACJ,CAAC;AAKD;;;;GAIG;AACH,MAAM,wBAAwB,GAAmB;IAC/C,CAAC,KAAK,EAAE,GAAG,EAAE,oBAAoB,CAAC,EAAG,UAAU;IAC/C,CAAC,GAAG,EAAE,KAAK,EAAE,oBAAoB,CAAC,EAAG,UAAU;IAC/C,CAAC,KAAK,EAAE,KAAK,EAAE,eAAe,CAAC,EAAM,UAAU;IAC/C,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAuB,sBAAsB;CAC7D,CAAA;AAED,iFAAiF;AACjF,MAAM,UAAU,oBAAoB,CAAC,IAAY,EAAE,UAAyB,EAAE;IAC5E,MAAM,GAAG,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAA;IAExC,KAAK,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,WAAW,CAAC,IAAI,wBAAwB,EAAE,CAAC;QACtE,MAAM,OAAO,GAAG,YAAY,CAAC,GAAG,KAAK,UAAU,GAAG,KAAK,QAAQ,MAAM,GAAG,IAAI,QAAQ,IAAI,EAAE,GAAG,CAAC,CAAA;QAC9F,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE;YACvC,MAAM,EAAE,GAAG,EAAE,GAAI,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAwC,CAAA;YACnE,OAAO,WAAW,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,CAAA;QAClC,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,eAAe,CAAC,IAAY,EAAE,UAAyB,EAAE;IACvE,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IAC9B,IAAI,GAAG,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IACpC,IAAI,GAAG,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IACjC,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IAClC,IAAI,OAAO,CAAC,aAAa,KAAK,KAAK,EAAE,CAAC;QACpC,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IAC9B,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC"}
|
|
1
|
+
{"version":3,"file":"symbols.js","sourceRoot":"","sources":["../src/symbols.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "punctilio",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.8.1",
|
|
4
4
|
"description": "Smart typography transformations: curly quotes, em-dashes, en-dashes, and more",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -72,10 +72,12 @@
|
|
|
72
72
|
"@types/node": "20.19.30",
|
|
73
73
|
"@types/seedrandom": "3.0.8",
|
|
74
74
|
"eslint": "9.39.2",
|
|
75
|
+
"eslint-plugin-redos": "4.5.0",
|
|
75
76
|
"eslint-plugin-regexp": "3.1.0",
|
|
76
77
|
"hastscript": "9.0.1",
|
|
77
78
|
"jest": "29.7.0",
|
|
78
79
|
"lint-staged": "16.4.0",
|
|
80
|
+
"recheck": "4.5.0",
|
|
79
81
|
"rehype-parse": "9.0.1",
|
|
80
82
|
"rehype-stringify": "10.0.1",
|
|
81
83
|
"remark-gfm": "4.0.1",
|
package/src/constants.ts
CHANGED
|
@@ -156,43 +156,33 @@ export function getEscapedSeparator(options: { separator?: string }): string {
|
|
|
156
156
|
export const REGEX_SPECIAL_CHARS = [".", "*", "+", "?", "^", "$", "[", "]", "\\", "|", "(", ")"] as const
|
|
157
157
|
|
|
158
158
|
/**
|
|
159
|
-
*
|
|
160
|
-
*
|
|
161
|
-
*
|
|
162
|
-
*
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
*
|
|
168
|
-
* @returns Pattern string: `(?<!\w${sep}*)\b`
|
|
159
|
+
* Maximum stack of adjacent separator markers tolerated in the boundary
|
|
160
|
+
* lookarounds. Three covers any realistic depth of nested HTML element
|
|
161
|
+
* boundaries; the bound also keeps the variable-width lookbehind in a
|
|
162
|
+
* range that static ReDoS analyzers can prove safe.
|
|
163
|
+
*/
|
|
164
|
+
const MAX_BOUNDARY_SEPARATORS = 3
|
|
165
|
+
|
|
166
|
+
/**
|
|
167
|
+
* Marker-aware word boundary pattern for the START of a match.
|
|
169
168
|
*
|
|
170
|
-
*
|
|
171
|
-
*
|
|
172
|
-
*
|
|
169
|
+
* Standard `\b` can create false boundaries when separator markers appear
|
|
170
|
+
* between word characters (e.g., `x\uE000ReLU` has a false `\b` before `R`).
|
|
171
|
+
* This pattern uses a negative lookbehind to reject matches preceded by a
|
|
172
|
+
* word character followed by up to `MAX_BOUNDARY_SEPARATORS` markers.
|
|
173
173
|
*/
|
|
174
174
|
export function wordBoundaryStart(escapedSeparator: string): string {
|
|
175
|
-
return `(?<!\\w${escapedSeparator}
|
|
175
|
+
return `(?<!\\w${escapedSeparator}{0,${MAX_BOUNDARY_SEPARATORS}})\\b`
|
|
176
176
|
}
|
|
177
177
|
|
|
178
178
|
/**
|
|
179
|
-
*
|
|
180
|
-
*
|
|
181
|
-
* Standard `\b` can create false boundaries when separator markers appear between
|
|
182
|
-
* word characters (e.g., `1st\uE000ly` has a false boundary after `t`).
|
|
179
|
+
* Marker-aware word boundary pattern for the END of a match.
|
|
183
180
|
*
|
|
184
|
-
*
|
|
185
|
-
*
|
|
186
|
-
*
|
|
187
|
-
* @param escapedSeparator - Regex-escaped separator string
|
|
188
|
-
* @returns Pattern string: `\b(?!${sep}*\w)`
|
|
189
|
-
*
|
|
190
|
-
* @example
|
|
191
|
-
* const wbe = wordBoundaryEnd(ESCAPED_DEFAULT_SEPARATOR)
|
|
192
|
-
* // With text "1st\uE000ly": \b would match after t, but wbe won't
|
|
181
|
+
* Mirror of `wordBoundaryStart` \u2014 rejects matches followed by up to
|
|
182
|
+
* `MAX_BOUNDARY_SEPARATORS` markers and then a word character.
|
|
193
183
|
*/
|
|
194
184
|
export function wordBoundaryEnd(escapedSeparator: string): string {
|
|
195
|
-
return `\\b(?!${escapedSeparator}
|
|
185
|
+
return `\\b(?!${escapedSeparator}{0,${MAX_BOUNDARY_SEPARATORS}}\\w)`
|
|
196
186
|
}
|
|
197
187
|
|
|
198
188
|
/**
|
|
@@ -201,34 +191,6 @@ export function wordBoundaryEnd(escapedSeparator: string): string {
|
|
|
201
191
|
*/
|
|
202
192
|
export const SPACE_CHARS = ` \t${UNICODE_SYMBOLS.NBSP}${UNICODE_SYMBOLS.NNBSP}`
|
|
203
193
|
|
|
204
|
-
/**
|
|
205
|
-
* Creates a lookbehind pattern that matches after whitespace, separator, or start of string.
|
|
206
|
-
* Used for arrow patterns and other constructs that should appear at word boundaries.
|
|
207
|
-
*
|
|
208
|
-
* Uses alternation instead of a character class so that multi-character
|
|
209
|
-
* separators are matched as a sequence, not as individual characters.
|
|
210
|
-
*
|
|
211
|
-
* @param escapedSeparator - Regex-escaped separator string (may be grouped)
|
|
212
|
-
* @returns Pattern string: `(?<=\\s|${sep}|^)`
|
|
213
|
-
*/
|
|
214
|
-
export function spaceBoundaryStart(escapedSeparator: string): string {
|
|
215
|
-
return `(?<=\\s|${escapedSeparator}|^)`
|
|
216
|
-
}
|
|
217
|
-
|
|
218
|
-
/**
|
|
219
|
-
* Creates a lookahead pattern that matches before whitespace, separator, or end of string.
|
|
220
|
-
* Used for arrow patterns and other constructs that should appear at word boundaries.
|
|
221
|
-
*
|
|
222
|
-
* Uses alternation instead of a character class so that multi-character
|
|
223
|
-
* separators are matched as a sequence, not as individual characters.
|
|
224
|
-
*
|
|
225
|
-
* @param escapedSeparator - Regex-escaped separator string (may be grouped)
|
|
226
|
-
* @returns Pattern string: `(?=\\s|${sep}|$)`
|
|
227
|
-
*/
|
|
228
|
-
export function spaceBoundaryEnd(escapedSeparator: string): string {
|
|
229
|
-
return `(?=\\s|${escapedSeparator}|$)`
|
|
230
|
-
}
|
|
231
|
-
|
|
232
194
|
/**
|
|
233
195
|
* Maximum recursion depth used by the rehype and remark tree walkers.
|
|
234
196
|
* Guards against stack overflow from maliciously or accidentally deep
|
|
@@ -266,6 +228,15 @@ export function cachedRegExp(pattern: string, flags: string): RegExp {
|
|
|
266
228
|
return re
|
|
267
229
|
}
|
|
268
230
|
|
|
231
|
+
/**
|
|
232
|
+
* Returns all currently cached RegExp objects. Exported for test
|
|
233
|
+
* introspection only (e.g. ReDoS scanning every compiled pattern).
|
|
234
|
+
* @internal
|
|
235
|
+
*/
|
|
236
|
+
export function getCachedRegExps(): RegExp[] {
|
|
237
|
+
return Array.from(regexCache.values())
|
|
238
|
+
}
|
|
239
|
+
|
|
269
240
|
/**
|
|
270
241
|
* Clears the regex cache. Exported for test isolation only.
|
|
271
242
|
* @internal
|
package/src/dashes.ts
CHANGED
|
@@ -110,8 +110,13 @@ export function enDashDateRange(text: string, options: DashOptions = {}): string
|
|
|
110
110
|
const wb = wordBoundaryStart(chr)
|
|
111
111
|
const wbe = wordBoundaryEnd(chr)
|
|
112
112
|
|
|
113
|
+
// Atomic-optional year groups (lookahead + backref). The capture inside
|
|
114
|
+
// the lookahead is locked in once matched, so the year group commits
|
|
115
|
+
// without backtracking.
|
|
116
|
+
const startYear = `(?=(?<startYear>${chr}? \\d{4})?)\\k<startYear>`
|
|
117
|
+
const endYear = `(?=(?<endYear> \\d{4})?)\\k<endYear>`
|
|
113
118
|
return text.replace(
|
|
114
|
-
cachedRegExp(`${wb}(?<startMonth>${months})
|
|
119
|
+
cachedRegExp(`${wb}(?<startMonth>${months})${startYear}(?<preSep>${chr}?)(?<preSpace> ?)-(?<postSpace> ?)(?<postSep>${chr}?)(?<endMonth>${months})${endYear}${wbe}`, "g"),
|
|
115
120
|
(...args) => {
|
|
116
121
|
const groups = args.at(-1) as Record<string, string>
|
|
117
122
|
const [pre, post] = dashStyle === "british" ? [" ", " "] : ["", ""]
|
|
@@ -171,13 +176,19 @@ function convertParentheticalDashes(text: string, sep: string, style: DashStyle)
|
|
|
171
176
|
// A single plain hyphen directly before a word character (through optional separators) is a
|
|
172
177
|
// suspended/hanging hyphen ("Yes-men and -women"), not a parenthetical dash — skip it.
|
|
173
178
|
// Em/en dashes and multiple hyphens can have zero trailing spaces.
|
|
179
|
+
// `sepAfter` and `trailing` share one optional unit so a whitespace run
|
|
180
|
+
// can only be assigned to it as a whole, keeping the match unambiguous.
|
|
174
181
|
const spacedDashPattern = cachedRegExp(
|
|
175
|
-
`(?<=[^\\s]|^)(?<sepBefore>${escapedSep}?)[ ]+(?:[${EN_DASH}${EM_DASH}][-${EN_DASH}${EM_DASH}]*|-{2,}|-(?!${escapedSep}*[${LATIN_LETTERS}\\d]))(?!-*>)[ ]*(?<sepAfter>${escapedSep}
|
|
182
|
+
`(?<=[^\\s]|^)(?<sepBefore>${escapedSep}?)[ ]+(?:[${EN_DASH}${EM_DASH}][-${EN_DASH}${EM_DASH}]*|-{2,}|-(?!${escapedSep}*[${LATIN_LETTERS}\\d]))(?!-*>)[ ]*(?:(?<sepAfter>${escapedSep})(?<trailing>[ ]*))?(?=\\S|$)`, "g"
|
|
176
183
|
)
|
|
177
184
|
text = text.replace(spacedDashPattern, (_match, sepBefore, sepAfter, trailing) => {
|
|
178
|
-
//
|
|
179
|
-
|
|
180
|
-
|
|
185
|
+
// sepAfter and trailing are undefined when the optional group didn't match.
|
|
186
|
+
sepAfter = sepAfter ?? ""
|
|
187
|
+
trailing = trailing ?? ""
|
|
188
|
+
// Trailing space after a separator belongs to the next text node — keep it
|
|
189
|
+
// regardless of style. Without a separator, the trailing space is part of
|
|
190
|
+
// the current node's whitespace around the dash and gets consumed.
|
|
191
|
+
const keepTrailing = sepAfter ? trailing : ""
|
|
181
192
|
return `${sepBefore}${maybeSpace}${localizedDash}${maybeSpace}${sepAfter}${keepTrailing}`
|
|
182
193
|
})
|
|
183
194
|
// Convert dashes at text node boundaries: separator alone precedes dash (e.g., "word{sep}– rest")
|
|
@@ -214,9 +225,10 @@ function convertParentheticalDashes(text: string, sep: string, style: DashStyle)
|
|
|
214
225
|
function normalizeEmDashSpacing(text: string, sep: string): string {
|
|
215
226
|
const escapedSep = getEscapedSeparator({ separator: sep })
|
|
216
227
|
|
|
217
|
-
// Remove all spaces around em-dashes
|
|
228
|
+
// Remove all spaces around em-dashes. The `\S|^` / `\S|$` boundary
|
|
229
|
+
// anchors restrict the match to dashes adjacent to non-whitespace.
|
|
218
230
|
text = text.replace(
|
|
219
|
-
cachedRegExp(`(?<before>${escapedSep}?)[ ]*${EM_DASH}[ ]*(?<after>${escapedSep}?)`, "g"),
|
|
231
|
+
cachedRegExp(`(?<=\\S|^)(?<before>${escapedSep}?)[ ]*${EM_DASH}[ ]*(?<after>${escapedSep}?)(?=\\S|$)`, "g"),
|
|
220
232
|
`$<before>${EM_DASH}$<after>`
|
|
221
233
|
)
|
|
222
234
|
|
package/src/symbols.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Symbol transformations: ellipses, multiplication, math symbols, arrows.
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
|
-
import { UNICODE_SYMBOLS, DEFAULT_SEPARATOR, LATIN_LETTERS, wordBoundaryEnd, SPACE_CHARS,
|
|
5
|
+
import { UNICODE_SYMBOLS, DEFAULT_SEPARATOR, LATIN_LETTERS, wordBoundaryEnd, SPACE_CHARS, cachedRegExp, getEscapedSeparator } from "./constants.js"
|
|
6
6
|
|
|
7
7
|
export interface SymbolOptions {
|
|
8
8
|
/** Boundary marker for HTML element boundaries. Default: "\uE000\uE001" */
|
|
@@ -43,8 +43,11 @@ export function ellipsis(text: string, options: SymbolOptions = {}): string {
|
|
|
43
43
|
const chr = getEscapedSeparator(options)
|
|
44
44
|
|
|
45
45
|
// Convert consecutive or spaced dots: ... or . . . → …
|
|
46
|
-
//
|
|
47
|
-
|
|
46
|
+
// Each gap allows EITHER a space (same-text-node spaced dots) OR a separator
|
|
47
|
+
// (cross-boundary contiguous dots), but never both — a space adjacent to a
|
|
48
|
+
// separator means the dots straddle a text-node boundary and shouldn't fold
|
|
49
|
+
// into one ellipsis.
|
|
50
|
+
const pattern = cachedRegExp(`\\.(?:[${SPACE_CHARS}]|(?<sep1>${chr}))?\\.(?:[${SPACE_CHARS}]?|(?<sep2>${chr})?)\\.`, "g")
|
|
48
51
|
text = text.replace(pattern, (...args) => {
|
|
49
52
|
const { sep1, sep2 } = args.at(-1) as Record<string, string | undefined>
|
|
50
53
|
return ELLIPSIS + (sep1 ?? "") + (sep2 ?? "")
|
|
@@ -99,10 +102,13 @@ export function multiplication(text: string, options: SymbolOptions = {}): strin
|
|
|
99
102
|
// Consuming the digit-suffix as part of each segment keeps the inner
|
|
100
103
|
// replace from misreading the `x` inside a trailing unit like `px` as
|
|
101
104
|
// another operator.
|
|
105
|
+
// Sticky flag (`y`) anchors each segment at the previous one's end.
|
|
106
|
+
// `rest` always starts with a chain segment from the outer match, so
|
|
107
|
+
// the engine never tries multiple start positions across whitespace.
|
|
102
108
|
const converted = rest.replace(
|
|
103
109
|
cachedRegExp(
|
|
104
110
|
`(?<pre>${chr}?)(?<spaceBefore>\\s*)[xX*](?<spaceAfter>\\s*)(?<post>${chr}?)(?<num>\\d+${digitSuffix})`,
|
|
105
|
-
"
|
|
111
|
+
"gy"
|
|
106
112
|
),
|
|
107
113
|
(...innerArgs) => {
|
|
108
114
|
const groups = innerArgs.at(-1) as Record<string, string>
|
|
@@ -147,8 +153,14 @@ export function mathSymbols(text: string, options: SymbolOptions = {}): string {
|
|
|
147
153
|
const chr = getEscapedSeparator(options)
|
|
148
154
|
|
|
149
155
|
for (const [left, right, lookahead, replacement] of MATH_SYMBOL_MAP) {
|
|
150
|
-
|
|
151
|
-
|
|
156
|
+
// Capture an optional separator between left and right so a cross-boundary
|
|
157
|
+
// match (e.g., `!<SEP>=`) re-emits the separator alongside the replacement
|
|
158
|
+
// and preserves the text-node-count invariant in transformTextNodes.
|
|
159
|
+
const pattern = cachedRegExp(`${left}(?<sep>${chr})?${right}${lookahead}`, "g")
|
|
160
|
+
text = text.replace(pattern, (...args) => {
|
|
161
|
+
const { sep } = args.at(-1) as Record<string, string | undefined>
|
|
162
|
+
return `${replacement}${sep ?? ""}`
|
|
163
|
+
})
|
|
152
164
|
}
|
|
153
165
|
return text
|
|
154
166
|
}
|
|
@@ -165,7 +177,12 @@ type ContextPredicate = (before: string, after: string) => boolean
|
|
|
165
177
|
const LEGAL_SYMBOL_CONTEXT_WINDOW = 25
|
|
166
178
|
|
|
167
179
|
/** Returns true when the context window ends with a path-like fragment (slash + non-whitespace). */
|
|
168
|
-
const isPathContext = (before: string): boolean =>
|
|
180
|
+
const isPathContext = (before: string): boolean => {
|
|
181
|
+
const parts = before.split(/\s+/)
|
|
182
|
+
const trailing = parts[parts.length - 1]
|
|
183
|
+
const slashIdx = trailing.indexOf("/")
|
|
184
|
+
return slashIdx >= 0 && slashIdx < trailing.length - 1
|
|
185
|
+
}
|
|
169
186
|
|
|
170
187
|
/**
|
|
171
188
|
* Context-aware replacement for legal symbols like (c), (r), (tm).
|
|
@@ -238,13 +255,15 @@ const ARROW_RULES: readonly [ArrowPatternBuilder, string][] = [
|
|
|
238
255
|
/** Convert -> and <-> to arrows. */
|
|
239
256
|
export function arrows(text: string, options: SymbolOptions = {}): string {
|
|
240
257
|
const chr = getEscapedSeparator(options)
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
258
|
+
// Boundary on the left is a capturing group rather than a lookbehind so
|
|
259
|
+
// the alternation stays out of the assertion (recheck-safe); `$1` re-emits
|
|
260
|
+
// the captured boundary char in the replacement.
|
|
261
|
+
const startBoundary = `(^|\\s|${chr})`
|
|
262
|
+
const endBoundary = `(?=\\s|${chr}|$)`
|
|
244
263
|
|
|
245
264
|
for (const [buildArrow, replacement] of ARROW_RULES) {
|
|
246
|
-
const pattern = cachedRegExp(`${
|
|
247
|
-
text = text.replace(pattern, replacement)
|
|
265
|
+
const pattern = cachedRegExp(`${startBoundary}${buildArrow(chr)}${endBoundary}`, "g")
|
|
266
|
+
text = text.replace(pattern, `$1${replacement}`)
|
|
248
267
|
}
|
|
249
268
|
|
|
250
269
|
return text
|
|
@@ -483,12 +502,17 @@ const PUNCTUATION_LIGATURE_MAP: LigatureRule[] = [
|
|
|
483
502
|
/** Convert ?? to ⁇, ?! to ⁈, !? to ⁉. Poor font support, disabled by default. */
|
|
484
503
|
export function punctuationLigatures(text: string, options: SymbolOptions = {}): string {
|
|
485
504
|
const chr = getEscapedSeparator(options)
|
|
505
|
+
const sepPattern = cachedRegExp(chr, "g")
|
|
486
506
|
|
|
487
507
|
for (const [first, repeated, replacement] of PUNCTUATION_LIGATURE_MAP) {
|
|
488
|
-
const pattern = cachedRegExp(`${first}(
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
508
|
+
const pattern = cachedRegExp(`${first}(?:${chr}?${repeated})+`, "g")
|
|
509
|
+
// Re-emit every separator that fell inside the match. The repeat group
|
|
510
|
+
// can swallow more than one (e.g. across 3+ split text nodes), and
|
|
511
|
+
// dropping any of them breaks transformTextNodes's text-node-count
|
|
512
|
+
// invariant.
|
|
513
|
+
text = text.replace(pattern, (match) => {
|
|
514
|
+
const seps = match.match(sepPattern) ?? []
|
|
515
|
+
return replacement + seps.join("")
|
|
492
516
|
})
|
|
493
517
|
}
|
|
494
518
|
|