punctilio 4.1.5 → 4.3.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.
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/prose-view.d.ts +27 -0
- package/dist/prose-view.d.ts.map +1 -0
- package/dist/prose-view.js +228 -0
- package/dist/prose-view.js.map +1 -0
- package/dist/quote-classifier.d.ts +19 -0
- package/dist/quote-classifier.d.ts.map +1 -0
- package/dist/quote-classifier.js +896 -0
- package/dist/quote-classifier.js.map +1 -0
- package/dist/quotes.d.ts +2 -2
- package/dist/quotes.d.ts.map +1 -1
- package/dist/quotes.js +13 -303
- package/dist/quotes.js.map +1 -1
- package/dist/rehype.d.ts.map +1 -1
- package/dist/rehype.js +4 -2
- package/dist/rehype.js.map +1 -1
- package/dist/symbols.d.ts.map +1 -1
- package/dist/symbols.js +3 -78
- package/dist/symbols.js.map +1 -1
- package/package.json +1 -1
- package/src/index.ts +8 -0
- package/src/prose-view.ts +295 -0
- package/src/quote-classifier.ts +957 -0
- package/src/quotes.ts +13 -369
- package/src/rehype.ts +4 -2
- package/src/symbols.ts +3 -99
package/dist/index.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ import { type DashStyle } from "./dashes.js";
|
|
|
3
3
|
import { type PunctuationStyle } from "./quotes.js";
|
|
4
4
|
export { DASH_STYLES, type DashOptions, type DashStyle, dashWordJoiner, enDashDateRange, enDashNumberRange, hyphenReplace, minusReplace, numberRangeDisallowedPrefixes, } from "./dashes.js";
|
|
5
5
|
export { HONORIFICS, nbspAfterCopyrightSymbols, nbspAfterHonorifics, nbspAfterReferenceAbbreviations, nbspAfterSectionSymbols, nbspAfterShortWords, nbspBeforeLastWord, nbspBetweenInitials, nbspBetweenNumberAndUnit, type NbspOptions, nbspTransform, REFERENCE_ABBREVIATIONS, UNITS, } from "./nbsp.js";
|
|
6
|
+
export { buildProseView, type ProseNode, type ProseView, replaceAllInView, type ReplaceAllOptions, runLegacyPass, } from "./prose-view.js";
|
|
6
7
|
export { classifyApostrophes, niceQuotes, PUNCTUATION_STYLES, type PunctuationStyle, type QuoteOptions } from "./quotes.js";
|
|
7
8
|
export interface TransformOptions {
|
|
8
9
|
/**
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AACnE,OAAO,EAAe,KAAK,SAAS,EAAE,MAAM,aAAa,CAAA;AACzD,OAAO,EAAsB,KAAK,gBAAgB,EAAE,MAAM,aAAa,CAAA;AACvE,OAAO,EACL,WAAW,EACX,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,aAAa,EACb,YAAY,EACZ,6BAA6B,GAC9B,MAAM,aAAa,CAAA;AACpB,OAAO,EACL,UAAU,EACV,yBAAyB,EACzB,mBAAmB,EACnB,+BAA+B,EAC/B,uBAAuB,EACvB,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,wBAAwB,EACxB,KAAK,WAAW,EAChB,aAAa,EACb,uBAAuB,EACvB,KAAK,GACN,MAAM,WAAW,CAAA;AAClB,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAE,kBAAkB,EAAE,KAAK,gBAAgB,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAA;AAE3H,MAAM,WAAW,gBAAgB;IAC/B;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAElB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;IAEjB;;;;;;;;;;OAUG;IACH,cAAc,CAAC,EAAE,OAAO,CAAA;IAExB;;;;;;;;;;;;;;;;;OAiBG;IACH,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;IAEnC;;;;;;;;;;;;;OAaG;IACH,SAAS,CAAC,EAAE,SAAS,CAAA;IAErB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAA;IAEnB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;IAEjB;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAA;IAErB;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,CAAA;IAEnB;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAA;IAEvB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,OAAO,CAAA;IAEd;;;;;;;;OAQG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAE3B;AASD,OAAO,EACL,MAAM,EACN,cAAc,EACd,OAAO,EACP,QAAQ,EACR,SAAS,EACT,YAAY,EACZ,WAAW,EACX,cAAc,EACd,UAAU,EACV,oBAAoB,EACpB,kBAAkB,EAClB,KAAK,aAAa,EAClB,eAAe,GAChB,MAAM,cAAc,CAAA;AACrB,OAAO,EAAE,qBAAqB,EAAE,6BAA6B,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AACtH,eAAO,MAAM,0BAA0B,KAA6C,CAAA;AAgBpF;gEACgE;AAChE,eAAO,MAAM,qBAAqB,EAAE,SAAS,MAAM,EAGlD,CAAA;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,gBAAqB,GAAG,MAAM,CAmH9E"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AACnE,OAAO,EAAe,KAAK,SAAS,EAAE,MAAM,aAAa,CAAA;AACzD,OAAO,EAAsB,KAAK,gBAAgB,EAAE,MAAM,aAAa,CAAA;AACvE,OAAO,EACL,WAAW,EACX,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,aAAa,EACb,YAAY,EACZ,6BAA6B,GAC9B,MAAM,aAAa,CAAA;AACpB,OAAO,EACL,UAAU,EACV,yBAAyB,EACzB,mBAAmB,EACnB,+BAA+B,EAC/B,uBAAuB,EACvB,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,wBAAwB,EACxB,KAAK,WAAW,EAChB,aAAa,EACb,uBAAuB,EACvB,KAAK,GACN,MAAM,WAAW,CAAA;AAClB,OAAO,EACL,cAAc,EACd,KAAK,SAAS,EACd,KAAK,SAAS,EACd,gBAAgB,EAChB,KAAK,iBAAiB,EACtB,aAAa,GACd,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAE,kBAAkB,EAAE,KAAK,gBAAgB,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAA;AAE3H,MAAM,WAAW,gBAAgB;IAC/B;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAElB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;IAEjB;;;;;;;;;;OAUG;IACH,cAAc,CAAC,EAAE,OAAO,CAAA;IAExB;;;;;;;;;;;;;;;;;OAiBG;IACH,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;IAEnC;;;;;;;;;;;;;OAaG;IACH,SAAS,CAAC,EAAE,SAAS,CAAA;IAErB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAA;IAEnB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;IAEjB;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAA;IAErB;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,CAAA;IAEnB;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAA;IAEvB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,OAAO,CAAA;IAEd;;;;;;;;OAQG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAE3B;AASD,OAAO,EACL,MAAM,EACN,cAAc,EACd,OAAO,EACP,QAAQ,EACR,SAAS,EACT,YAAY,EACZ,WAAW,EACX,cAAc,EACd,UAAU,EACV,oBAAoB,EACpB,kBAAkB,EAClB,KAAK,aAAa,EAClB,eAAe,GAChB,MAAM,cAAc,CAAA;AACrB,OAAO,EAAE,qBAAqB,EAAE,6BAA6B,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AACtH,eAAO,MAAM,0BAA0B,KAA6C,CAAA;AAgBpF;gEACgE;AAChE,eAAO,MAAM,qBAAqB,EAAE,SAAS,MAAM,EAGlD,CAAA;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,gBAAqB,GAAG,MAAM,CAmH9E"}
|
package/dist/index.js
CHANGED
|
@@ -3,6 +3,7 @@ import { DASH_STYLES } from "./dashes.js";
|
|
|
3
3
|
import { PUNCTUATION_STYLES } from "./quotes.js";
|
|
4
4
|
export { DASH_STYLES, dashWordJoiner, enDashDateRange, enDashNumberRange, hyphenReplace, minusReplace, numberRangeDisallowedPrefixes, } from "./dashes.js";
|
|
5
5
|
export { HONORIFICS, nbspAfterCopyrightSymbols, nbspAfterHonorifics, nbspAfterReferenceAbbreviations, nbspAfterSectionSymbols, nbspAfterShortWords, nbspBeforeLastWord, nbspBetweenInitials, nbspBetweenNumberAndUnit, nbspTransform, REFERENCE_ABBREVIATIONS, UNITS, } from "./nbsp.js";
|
|
6
|
+
export { buildProseView, replaceAllInView, runLegacyPass, } from "./prose-view.js";
|
|
6
7
|
export { classifyApostrophes, niceQuotes, PUNCTUATION_STYLES } from "./quotes.js";
|
|
7
8
|
import { niceQuotes } from "./quotes.js";
|
|
8
9
|
import { hyphenReplace } from "./dashes.js";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export interface ProseNode {
|
|
2
|
+
value: string;
|
|
3
|
+
}
|
|
4
|
+
export interface ProseView {
|
|
5
|
+
/** Concatenation of the nodes' values. No markers, ever. */
|
|
6
|
+
readonly text: string;
|
|
7
|
+
/** Offsets in `text` where one source node ends and the next begins (interior boundaries only; length = nodes.length - 1; may contain duplicates when nodes are empty). */
|
|
8
|
+
readonly boundaries: readonly number[];
|
|
9
|
+
/** True iff a node edge falls at exactly this offset. O(log n) binary search. */
|
|
10
|
+
hasBoundary(offset: number): boolean;
|
|
11
|
+
/** Queue an edit replacing [start, end) with `text`. Edits must not overlap; enforced at commit. */
|
|
12
|
+
replace(start: number, end: number, text: string, opts?: {
|
|
13
|
+
bind?: "left" | "right";
|
|
14
|
+
}): void;
|
|
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
|
+
commit(): void;
|
|
17
|
+
}
|
|
18
|
+
export declare function buildProseView(nodes: ProseNode[]): ProseView;
|
|
19
|
+
export interface ReplaceAllOptions {
|
|
20
|
+
/** Opt-in: allow a match that contains an interior node boundary. Default: such matches are skipped. */
|
|
21
|
+
allowBoundaries?: (match: RegExpExecArray, view: ProseView) => boolean;
|
|
22
|
+
/** For pure-insertion edits produced by the replacer (rare), bind side. */
|
|
23
|
+
bind?: "left" | "right";
|
|
24
|
+
}
|
|
25
|
+
export declare function replaceAllInView(view: ProseView, regex: RegExp, replacer: (match: RegExpExecArray, view: ProseView) => string | null, options?: ReplaceAllOptions): void;
|
|
26
|
+
export declare function runLegacyPass(view: ProseView, passFn: (markedText: string) => string, separator?: string): void;
|
|
27
|
+
//# sourceMappingURL=prose-view.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prose-view.d.ts","sourceRoot":"","sources":["../src/prose-view.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,SAAS;IACxB,4DAA4D;IAC5D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,2KAA2K;IAC3K,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAA;IACtC,iFAAiF;IACjF,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAA;IACpC,oGAAoG;IACpG,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,GAAG,IAAI,CAAA;IAC3F,2KAA2K;IAC3K,MAAM,IAAI,IAAI,CAAA;CACf;AAkND,wBAAgB,cAAc,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,SAAS,CAE5D;AAED,MAAM,WAAW,iBAAiB;IAChC,wGAAwG;IACxG,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,SAAS,KAAK,OAAO,CAAA;IACtE,2EAA2E;IAC3E,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;CACxB;AAYD,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,CA2BN;AAED,wBAAgB,aAAa,CAC3B,IAAI,EAAE,SAAS,EACf,MAAM,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,MAAM,EACtC,SAAS,GAAE,MAA0B,GACpC,IAAI,CAON"}
|
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
import { DEFAULT_SEPARATOR } from "./constants.js";
|
|
2
|
+
import { transformTextNodes } from "./utils.js";
|
|
3
|
+
/** True iff the offset falls between a high surrogate and its low surrogate. */
|
|
4
|
+
function splitsSurrogatePair(text, offset) {
|
|
5
|
+
if (offset <= 0 || offset >= text.length)
|
|
6
|
+
return false;
|
|
7
|
+
const high = text.charCodeAt(offset - 1);
|
|
8
|
+
const low = text.charCodeAt(offset);
|
|
9
|
+
return high >= 0xd800 && high <= 0xdbff && low >= 0xdc00 && low <= 0xdfff;
|
|
10
|
+
}
|
|
11
|
+
class ProseViewImpl {
|
|
12
|
+
nodes;
|
|
13
|
+
cachedText;
|
|
14
|
+
cachedBoundaries;
|
|
15
|
+
edits = [];
|
|
16
|
+
constructor(nodes) {
|
|
17
|
+
this.nodes = nodes;
|
|
18
|
+
this.cachedText = "";
|
|
19
|
+
this.cachedBoundaries = [];
|
|
20
|
+
this.refresh();
|
|
21
|
+
}
|
|
22
|
+
get text() {
|
|
23
|
+
return this.cachedText;
|
|
24
|
+
}
|
|
25
|
+
get boundaries() {
|
|
26
|
+
return this.cachedBoundaries;
|
|
27
|
+
}
|
|
28
|
+
/** Recompute `text` and `boundaries` from the current node values. @internal */
|
|
29
|
+
refresh() {
|
|
30
|
+
let text = "";
|
|
31
|
+
const boundaries = [];
|
|
32
|
+
this.nodes.forEach((node, index) => {
|
|
33
|
+
text += node.value;
|
|
34
|
+
if (index < this.nodes.length - 1) {
|
|
35
|
+
boundaries.push(text.length);
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
this.cachedText = text;
|
|
39
|
+
this.cachedBoundaries = boundaries;
|
|
40
|
+
}
|
|
41
|
+
/** @internal */
|
|
42
|
+
hasQueuedEdits() {
|
|
43
|
+
return this.edits.length > 0;
|
|
44
|
+
}
|
|
45
|
+
/** @internal */
|
|
46
|
+
getNodes() {
|
|
47
|
+
return this.nodes;
|
|
48
|
+
}
|
|
49
|
+
hasBoundary(offset) {
|
|
50
|
+
const boundaries = this.cachedBoundaries;
|
|
51
|
+
let low = 0;
|
|
52
|
+
let high = boundaries.length - 1;
|
|
53
|
+
while (low <= high) {
|
|
54
|
+
const mid = (low + high) >>> 1;
|
|
55
|
+
const value = boundaries[mid];
|
|
56
|
+
if (value === offset)
|
|
57
|
+
return true;
|
|
58
|
+
if (value < offset) {
|
|
59
|
+
low = mid + 1;
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
high = mid - 1;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return false;
|
|
66
|
+
}
|
|
67
|
+
replace(start, end, text, opts) {
|
|
68
|
+
if (!Number.isInteger(start) || !Number.isInteger(end)) {
|
|
69
|
+
throw new Error(`replace() offsets must be integers, got start=${start}, end=${end}.`);
|
|
70
|
+
}
|
|
71
|
+
if (start < 0 || start > end || end > this.cachedText.length) {
|
|
72
|
+
throw new Error(`replace() requires 0 <= start <= end <= text.length (${this.cachedText.length}), ` +
|
|
73
|
+
`got start=${start}, end=${end}.`);
|
|
74
|
+
}
|
|
75
|
+
if (splitsSurrogatePair(this.cachedText, start)) {
|
|
76
|
+
throw new Error(`replace() start=${start} splits a UTF-16 surrogate pair.`);
|
|
77
|
+
}
|
|
78
|
+
if (splitsSurrogatePair(this.cachedText, end)) {
|
|
79
|
+
throw new Error(`replace() end=${end} splits a UTF-16 surrogate pair.`);
|
|
80
|
+
}
|
|
81
|
+
this.edits.push({ start, end, text, bind: opts?.bind ?? "left" });
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Apply queued edits to the source nodes. Edits are ordered by start offset,
|
|
85
|
+
* tie-breaking shorter spans first so a zero-length edit sorts before a
|
|
86
|
+
* spanning edit at the same start. A pure insertion may therefore coexist
|
|
87
|
+
* with a replacement starting at the same offset: the insertion's text lands
|
|
88
|
+
* before the replaced span's text. Overlapping spans (and two pure
|
|
89
|
+
* insertions at the same offset) are rejected.
|
|
90
|
+
*
|
|
91
|
+
* All edits are distributed in a single left-to-right pass that rebuilds
|
|
92
|
+
* each node's value once — per-edit string surgery would be quadratic on
|
|
93
|
+
* edit-dense input.
|
|
94
|
+
*/
|
|
95
|
+
commit() {
|
|
96
|
+
if (this.edits.length === 0) {
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
const sorted = [...this.edits].sort((a, b) => a.start - b.start || (a.end - a.start) - (b.end - b.start));
|
|
100
|
+
for (let i = 1; i < sorted.length; i++) {
|
|
101
|
+
const prev = sorted[i - 1];
|
|
102
|
+
const curr = sorted[i];
|
|
103
|
+
if (prev.end > curr.start) {
|
|
104
|
+
throw new Error(`Overlapping edits: [${prev.start}, ${prev.end}) and [${curr.start}, ${curr.end}).`);
|
|
105
|
+
}
|
|
106
|
+
if (prev.end === curr.start && prev.start === prev.end && curr.start === curr.end) {
|
|
107
|
+
throw new Error(`Two pure insertions at the same offset ${curr.start} are ambiguous; combine them.`);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
// Node spans in `text` via cumulative lengths.
|
|
111
|
+
const starts = [];
|
|
112
|
+
const ends = [];
|
|
113
|
+
let cursor = 0;
|
|
114
|
+
for (const node of this.nodes) {
|
|
115
|
+
starts.push(cursor);
|
|
116
|
+
cursor += node.value.length;
|
|
117
|
+
ends.push(cursor);
|
|
118
|
+
}
|
|
119
|
+
const text = this.cachedText;
|
|
120
|
+
const parts = this.nodes.map(() => []);
|
|
121
|
+
// Rolling copy state: kept text in [0, copiedUpTo) has been distributed.
|
|
122
|
+
let copiedUpTo = 0;
|
|
123
|
+
let copyNode = 0;
|
|
124
|
+
const copyUpTo = (target) => {
|
|
125
|
+
while (copiedUpTo < target) {
|
|
126
|
+
while (copyNode < this.nodes.length - 1 && ends[copyNode] <= copiedUpTo)
|
|
127
|
+
copyNode++;
|
|
128
|
+
const sliceEnd = Math.min(target, ends[copyNode]);
|
|
129
|
+
parts[copyNode].push(text.slice(copiedUpTo, sliceEnd));
|
|
130
|
+
copiedUpTo = sliceEnd;
|
|
131
|
+
}
|
|
132
|
+
};
|
|
133
|
+
for (const edit of sorted) {
|
|
134
|
+
copyUpTo(edit.start);
|
|
135
|
+
// Deleted spans are simply never copied; replacement/insertion text
|
|
136
|
+
// lands in the target node, whose parts are filled exactly up to
|
|
137
|
+
// `edit.start` at this point.
|
|
138
|
+
if (edit.text.length > 0) {
|
|
139
|
+
const targetIndex = edit.end > edit.start
|
|
140
|
+
? this.nodeContainingChar(edit.start, ends)
|
|
141
|
+
: this.targetNodeForInsertion(edit, ends);
|
|
142
|
+
parts[targetIndex].push(edit.text);
|
|
143
|
+
}
|
|
144
|
+
if (edit.end > copiedUpTo)
|
|
145
|
+
copiedUpTo = edit.end;
|
|
146
|
+
}
|
|
147
|
+
copyUpTo(text.length);
|
|
148
|
+
this.nodes.forEach((node, index) => {
|
|
149
|
+
node.value = parts[index].join("");
|
|
150
|
+
});
|
|
151
|
+
this.edits = [];
|
|
152
|
+
this.refresh();
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Index of the node whose span contains the character at `offset`: the
|
|
156
|
+
* first node whose end lies past the offset (binary search; empty nodes at
|
|
157
|
+
* the offset are skipped, matching a first-containing-span linear scan).
|
|
158
|
+
*/
|
|
159
|
+
nodeContainingChar(offset, ends) {
|
|
160
|
+
let low = 0;
|
|
161
|
+
let high = ends.length - 1;
|
|
162
|
+
while (low < high) {
|
|
163
|
+
const mid = (low + high) >>> 1;
|
|
164
|
+
if (ends[mid] <= offset) {
|
|
165
|
+
low = mid + 1;
|
|
166
|
+
}
|
|
167
|
+
else {
|
|
168
|
+
high = mid;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
return low;
|
|
172
|
+
}
|
|
173
|
+
targetNodeForInsertion(edit, ends) {
|
|
174
|
+
if (edit.bind === "left") {
|
|
175
|
+
if (edit.start === 0)
|
|
176
|
+
return 0;
|
|
177
|
+
return this.nodeContainingChar(edit.start - 1, ends);
|
|
178
|
+
}
|
|
179
|
+
if (edit.start === this.cachedText.length)
|
|
180
|
+
return this.nodes.length - 1;
|
|
181
|
+
return this.nodeContainingChar(edit.start, ends);
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
export function buildProseView(nodes) {
|
|
185
|
+
return new ProseViewImpl(nodes);
|
|
186
|
+
}
|
|
187
|
+
/** True iff some interior boundary falls strictly inside the match span. */
|
|
188
|
+
function matchContainsBoundary(match, view) {
|
|
189
|
+
const matchStart = match.index;
|
|
190
|
+
const matchEnd = match.index + match[0].length;
|
|
191
|
+
for (const boundary of view.boundaries) {
|
|
192
|
+
if (boundary > matchStart && boundary < matchEnd)
|
|
193
|
+
return true;
|
|
194
|
+
}
|
|
195
|
+
return false;
|
|
196
|
+
}
|
|
197
|
+
export function replaceAllInView(view, regex, replacer, options) {
|
|
198
|
+
if (!regex.global) {
|
|
199
|
+
throw new Error("replaceAllInView() requires a regex with the global (g) flag.");
|
|
200
|
+
}
|
|
201
|
+
const allowBoundaries = options?.allowBoundaries;
|
|
202
|
+
const bind = options?.bind;
|
|
203
|
+
const text = view.text;
|
|
204
|
+
regex.lastIndex = 0;
|
|
205
|
+
let match;
|
|
206
|
+
while ((match = regex.exec(text)) !== null) {
|
|
207
|
+
if (match[0].length === 0) {
|
|
208
|
+
regex.lastIndex += 1;
|
|
209
|
+
}
|
|
210
|
+
if (matchContainsBoundary(match, view) && !allowBoundaries?.(match, view)) {
|
|
211
|
+
continue;
|
|
212
|
+
}
|
|
213
|
+
const replacement = replacer(match, view);
|
|
214
|
+
if (replacement === null) {
|
|
215
|
+
continue;
|
|
216
|
+
}
|
|
217
|
+
view.replace(match.index, match.index + match[0].length, replacement, bind ? { bind } : undefined);
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
export function runLegacyPass(view, passFn, separator = DEFAULT_SEPARATOR) {
|
|
221
|
+
const impl = view;
|
|
222
|
+
if (impl.hasQueuedEdits()) {
|
|
223
|
+
throw new Error("runLegacyPass() cannot run while the view has uncommitted queued edits.");
|
|
224
|
+
}
|
|
225
|
+
transformTextNodes(impl.getNodes(), passFn, separator);
|
|
226
|
+
impl.refresh();
|
|
227
|
+
}
|
|
228
|
+
//# sourceMappingURL=prose-view.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prose-view.js","sourceRoot":"","sources":["../src/prose-view.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export declare const PUNCTUATION_STYLES: readonly ["american", "british", "german", "french", "none"];
|
|
2
|
+
export type PunctuationStyle = (typeof PUNCTUATION_STYLES)[number];
|
|
3
|
+
/** Locale style that performs quote work ("none" is handled by the callers). */
|
|
4
|
+
export type ActiveQuoteStyle = Exclude<PunctuationStyle, "none">;
|
|
5
|
+
/**
|
|
6
|
+
* Role assigned to each quote-like character by the classifier. The engine
|
|
7
|
+
* tracks roles through an internal one-character alphabet (the American
|
|
8
|
+
* convention glyphs plus U+02BC for semantic apostrophes); rendering maps the
|
|
9
|
+
* roles to per-locale glyph strings.
|
|
10
|
+
*/
|
|
11
|
+
export type QuoteRole = "APOSTROPHE" | "CLOSE_DOUBLE" | "CLOSE_SINGLE" | "DOUBLE_PRIME" | "LITERAL" | "OPEN_DOUBLE" | "OPEN_SINGLE" | "PRIME";
|
|
12
|
+
/**
|
|
13
|
+
* The quote/apostrophe role classifier: one boundary-aware scan over the
|
|
14
|
+
* clean text replaces the v4 ordered regex pipeline.
|
|
15
|
+
*/
|
|
16
|
+
export declare function classifyAndRenderQuotes(markedText: string, separator: string, style: ActiveQuoteStyle, apostrophe: string): string;
|
|
17
|
+
/** primeMarks engine: converts `5'10"` to `5′10″` with quote-balance guards. */
|
|
18
|
+
export declare function convertPrimeMarks(markedText: string, separator: string): string;
|
|
19
|
+
//# sourceMappingURL=quote-classifier.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quote-classifier.d.ts","sourceRoot":"","sources":["../src/quote-classifier.ts"],"names":[],"mappings":"AAoBA,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;AA+zBX;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,gBAAgB,EACvB,UAAU,EAAE,MAAM,GACjB,MAAM,CASR;AAsDD,gFAAgF;AAChF,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAY/E"}
|