punctilio 5.3.0 → 5.4.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/README.md +1 -1
- package/dist/constants.d.ts +37 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +67 -0
- package/dist/constants.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/constants.ts +70 -0
- package/src/index.ts +6 -1
package/README.md
CHANGED
|
@@ -233,7 +233,7 @@ A `.pre-commit-hooks.yaml` ships in the package, so [pre-commit](https://pre-com
|
|
|
233
233
|
# .pre-commit-config.yaml
|
|
234
234
|
repos:
|
|
235
235
|
- repo: https://github.com/AlexanderMattTurner/punctilio
|
|
236
|
-
rev: v5.
|
|
236
|
+
rev: v5.3.0
|
|
237
237
|
hooks:
|
|
238
238
|
- id: punctilio # rewrites *.md / *.html in place
|
|
239
239
|
- id: punctilio-check # or: fail without writing (CI-friendly)
|
package/dist/constants.d.ts
CHANGED
|
@@ -65,9 +65,46 @@ export declare const UNICODE_SYMBOLS: {
|
|
|
65
65
|
readonly ARABIC_QUESTION_MARK: "؟";
|
|
66
66
|
readonly ARABIC_SEMICOLON: "؛";
|
|
67
67
|
readonly GREEK_QUESTION_MARK: ";";
|
|
68
|
+
readonly INVERTED_EXCLAMATION: "¡";
|
|
69
|
+
readonly INVERTED_QUESTION: "¿";
|
|
70
|
+
readonly FULLWIDTH_LEFT_PAREN: "(";
|
|
71
|
+
readonly FULLWIDTH_RIGHT_PAREN: ")";
|
|
72
|
+
readonly FULLWIDTH_LEFT_BRACKET: "[";
|
|
73
|
+
readonly FULLWIDTH_RIGHT_BRACKET: "]";
|
|
74
|
+
readonly FULLWIDTH_LEFT_BRACE: "{";
|
|
75
|
+
readonly FULLWIDTH_RIGHT_BRACE: "}";
|
|
76
|
+
readonly LEFT_ANGLE_BRACKET: "〈";
|
|
77
|
+
readonly RIGHT_ANGLE_BRACKET: "〉";
|
|
78
|
+
readonly LEFT_DOUBLE_ANGLE_BRACKET: "《";
|
|
79
|
+
readonly RIGHT_DOUBLE_ANGLE_BRACKET: "》";
|
|
80
|
+
readonly LEFT_CORNER_BRACKET: "「";
|
|
81
|
+
readonly RIGHT_CORNER_BRACKET: "」";
|
|
82
|
+
readonly LEFT_WHITE_CORNER_BRACKET: "『";
|
|
83
|
+
readonly RIGHT_WHITE_CORNER_BRACKET: "』";
|
|
84
|
+
readonly LEFT_LENTICULAR_BRACKET: "【";
|
|
85
|
+
readonly RIGHT_LENTICULAR_BRACKET: "】";
|
|
68
86
|
};
|
|
69
87
|
/** All terminal punctuation chars for regex character classes (ASCII through CJK/Arabic/Greek). */
|
|
70
88
|
export declare const TERMINAL_PUNCTUATION: readonly ["!", "?", ".", ",", ";", ":", "…", "⁇", "⁈", "⁉", "‼", "‽", "!", "?", ".", ",", ";", ":", "。", "、", "؟", "؛", ";"];
|
|
89
|
+
/**
|
|
90
|
+
* Punctuation that opens a construct and so binds rightward, to the text after
|
|
91
|
+
* it rather than the text before: brackets, the Spanish inverted marks, and the
|
|
92
|
+
* opening quote forms (including the low-9 openers German and Polish use).
|
|
93
|
+
* Guillemets follow the French convention where `«` opens; German inverts them.
|
|
94
|
+
*
|
|
95
|
+
* The counterpart to {@link TERMINAL_PUNCTUATION}, and like it, spans ASCII
|
|
96
|
+
* through CJK. Straight `"` and `'` are absent: their shape is ambiguous until
|
|
97
|
+
* classified, which is what {@link niceQuotes} and {@link classifyApostrophes}
|
|
98
|
+
* settle, so a consumer that wants to treat one as an opener owns that call.
|
|
99
|
+
*/
|
|
100
|
+
export declare const OPENING_PUNCTUATION: readonly string[];
|
|
101
|
+
/**
|
|
102
|
+
* Closing brackets, which may not begin a line. Scoped to brackets because the
|
|
103
|
+
* other marks barred from a line start are {@link TERMINAL_PUNCTUATION} and the
|
|
104
|
+
* closing quote forms in {@link UNICODE_SYMBOLS}; the three together are what a
|
|
105
|
+
* consumer keeps from stranding at a soft wrap.
|
|
106
|
+
*/
|
|
107
|
+
export declare const CLOSING_BRACKETS: readonly string[];
|
|
71
108
|
/**
|
|
72
109
|
* Character class pattern for Latin letters including European accented characters.
|
|
73
110
|
* Use inside regex character classes: `[${LATIN_LETTERS}]`
|
package/dist/constants.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,eAAe
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8FlB,CAAA;AAEV,mGAAmG;AACnG,eAAO,MAAM,oBAAoB,8HAYvB,CAAA;AAqBV;;;;;;;;;;GAUG;AACH,eAAO,MAAM,mBAAmB,EAAE,SAAS,MAAM,EAShD,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,EAAE,SAAS,MAAM,EAAgD,CAAA;AAE9F;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,aAAa,qGAAqG,CAAA;AAE/H;;;;;GAKG;AACH,eAAO,MAAM,cAAc,wGAAwB,CAAA;AAEnD,sEAAsE;AACtE,eAAO,MAAM,WAAW,QAAuD,CAAA;AAE/E,qEAAqE;AACrE,eAAO,MAAM,UAAU,QAAoD,CAAA;AAE3E,6FAA6F;AAC7F,eAAO,MAAM,eAAe,QAAwC,CAAA;AAEpE,qEAAqE;AACrE,eAAO,MAAM,iBAAiB,QAAyC,CAAA;AAEvE,+DAA+D;AAC/D,eAAO,MAAM,OAAO,QAAO,CAAA;AAE3B,gFAAgF;AAChF,eAAO,MAAM,aAAa,QAAiC,CAAA;AAE3D;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,aAI5B,CAAA;AAEF,gFAAgF;AAChF,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAE1D;AAED;;;GAGG;AACH,eAAO,MAAM,uBAAuB,IAAI,CAAA;AAExC,gFAAgF;AAChF,eAAO,MAAM,mBAAmB,OAAO,CAAA;AAEvC,eAAO,MAAM,oBAAoB,OAAO,CAAA;AAGxC,yFAAyF;AACzF,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CASnE;AAED,gBAAgB;AAChB,wBAAgB,gBAAgB,IAAI,MAAM,EAAE,CAE3C;AAED,gBAAgB;AAChB,wBAAgB,eAAe,IAAI,IAAI,CAEtC"}
|
package/dist/constants.js
CHANGED
|
@@ -72,6 +72,27 @@ export const UNICODE_SYMBOLS = {
|
|
|
72
72
|
ARABIC_SEMICOLON: "\u061B", // ؛
|
|
73
73
|
// Greek punctuation
|
|
74
74
|
GREEK_QUESTION_MARK: "\u037E", // ; (visually identical to ASCII semicolon)
|
|
75
|
+
// Spanish inverted openers
|
|
76
|
+
INVERTED_EXCLAMATION: "\u00A1", // ¡
|
|
77
|
+
INVERTED_QUESTION: "\u00BF", // ¿
|
|
78
|
+
// CJK fullwidth brackets
|
|
79
|
+
FULLWIDTH_LEFT_PAREN: "\uFF08", // (
|
|
80
|
+
FULLWIDTH_RIGHT_PAREN: "\uFF09", // )
|
|
81
|
+
FULLWIDTH_LEFT_BRACKET: "\uFF3B", // [
|
|
82
|
+
FULLWIDTH_RIGHT_BRACKET: "\uFF3D", // ]
|
|
83
|
+
FULLWIDTH_LEFT_BRACE: "\uFF5B", // {
|
|
84
|
+
FULLWIDTH_RIGHT_BRACE: "\uFF5D", // }
|
|
85
|
+
// CJK ideographic brackets
|
|
86
|
+
LEFT_ANGLE_BRACKET: "\u3008", // 〈
|
|
87
|
+
RIGHT_ANGLE_BRACKET: "\u3009", // 〉
|
|
88
|
+
LEFT_DOUBLE_ANGLE_BRACKET: "\u300A", // 《
|
|
89
|
+
RIGHT_DOUBLE_ANGLE_BRACKET: "\u300B", // 》
|
|
90
|
+
LEFT_CORNER_BRACKET: "\u300C", // 「
|
|
91
|
+
RIGHT_CORNER_BRACKET: "\u300D", // 」
|
|
92
|
+
LEFT_WHITE_CORNER_BRACKET: "\u300E", // 『
|
|
93
|
+
RIGHT_WHITE_CORNER_BRACKET: "\u300F", // 』
|
|
94
|
+
LEFT_LENTICULAR_BRACKET: "\u3010", // 【
|
|
95
|
+
RIGHT_LENTICULAR_BRACKET: "\u3011", // 】
|
|
75
96
|
};
|
|
76
97
|
/** All terminal punctuation chars for regex character classes (ASCII through CJK/Arabic/Greek). */
|
|
77
98
|
export const TERMINAL_PUNCTUATION = [
|
|
@@ -87,6 +108,52 @@ export const TERMINAL_PUNCTUATION = [
|
|
|
87
108
|
UNICODE_SYMBOLS.ARABIC_QUESTION_MARK, UNICODE_SYMBOLS.ARABIC_SEMICOLON,
|
|
88
109
|
UNICODE_SYMBOLS.GREEK_QUESTION_MARK,
|
|
89
110
|
];
|
|
111
|
+
/**
|
|
112
|
+
* Bracket pairs, opening first, ASCII through the fullwidth and CJK forms.
|
|
113
|
+
* {@link OPENING_PUNCTUATION} and {@link CLOSING_BRACKETS} are both projections
|
|
114
|
+
* of this list, so a bracket can never be listed on one side only.
|
|
115
|
+
*/
|
|
116
|
+
const BRACKET_PAIRS = [
|
|
117
|
+
["(", ")"],
|
|
118
|
+
["[", "]"],
|
|
119
|
+
["{", "}"],
|
|
120
|
+
[UNICODE_SYMBOLS.FULLWIDTH_LEFT_PAREN, UNICODE_SYMBOLS.FULLWIDTH_RIGHT_PAREN],
|
|
121
|
+
[UNICODE_SYMBOLS.FULLWIDTH_LEFT_BRACKET, UNICODE_SYMBOLS.FULLWIDTH_RIGHT_BRACKET],
|
|
122
|
+
[UNICODE_SYMBOLS.FULLWIDTH_LEFT_BRACE, UNICODE_SYMBOLS.FULLWIDTH_RIGHT_BRACE],
|
|
123
|
+
[UNICODE_SYMBOLS.LEFT_ANGLE_BRACKET, UNICODE_SYMBOLS.RIGHT_ANGLE_BRACKET],
|
|
124
|
+
[UNICODE_SYMBOLS.LEFT_DOUBLE_ANGLE_BRACKET, UNICODE_SYMBOLS.RIGHT_DOUBLE_ANGLE_BRACKET],
|
|
125
|
+
[UNICODE_SYMBOLS.LEFT_CORNER_BRACKET, UNICODE_SYMBOLS.RIGHT_CORNER_BRACKET],
|
|
126
|
+
[UNICODE_SYMBOLS.LEFT_WHITE_CORNER_BRACKET, UNICODE_SYMBOLS.RIGHT_WHITE_CORNER_BRACKET],
|
|
127
|
+
[UNICODE_SYMBOLS.LEFT_LENTICULAR_BRACKET, UNICODE_SYMBOLS.RIGHT_LENTICULAR_BRACKET],
|
|
128
|
+
];
|
|
129
|
+
/**
|
|
130
|
+
* Punctuation that opens a construct and so binds rightward, to the text after
|
|
131
|
+
* it rather than the text before: brackets, the Spanish inverted marks, and the
|
|
132
|
+
* opening quote forms (including the low-9 openers German and Polish use).
|
|
133
|
+
* Guillemets follow the French convention where `«` opens; German inverts them.
|
|
134
|
+
*
|
|
135
|
+
* The counterpart to {@link TERMINAL_PUNCTUATION}, and like it, spans ASCII
|
|
136
|
+
* through CJK. Straight `"` and `'` are absent: their shape is ambiguous until
|
|
137
|
+
* classified, which is what {@link niceQuotes} and {@link classifyApostrophes}
|
|
138
|
+
* settle, so a consumer that wants to treat one as an opener owns that call.
|
|
139
|
+
*/
|
|
140
|
+
export const OPENING_PUNCTUATION = [
|
|
141
|
+
...BRACKET_PAIRS.map(([opening]) => opening),
|
|
142
|
+
UNICODE_SYMBOLS.INVERTED_EXCLAMATION,
|
|
143
|
+
UNICODE_SYMBOLS.INVERTED_QUESTION,
|
|
144
|
+
UNICODE_SYMBOLS.LEFT_DOUBLE_QUOTE,
|
|
145
|
+
UNICODE_SYMBOLS.LEFT_SINGLE_QUOTE,
|
|
146
|
+
UNICODE_SYMBOLS.LEFT_GUILLEMET,
|
|
147
|
+
UNICODE_SYMBOLS.DOUBLE_LOW_9_QUOTE,
|
|
148
|
+
UNICODE_SYMBOLS.SINGLE_LOW_9_QUOTE,
|
|
149
|
+
];
|
|
150
|
+
/**
|
|
151
|
+
* Closing brackets, which may not begin a line. Scoped to brackets because the
|
|
152
|
+
* other marks barred from a line start are {@link TERMINAL_PUNCTUATION} and the
|
|
153
|
+
* closing quote forms in {@link UNICODE_SYMBOLS}; the three together are what a
|
|
154
|
+
* consumer keeps from stranding at a soft wrap.
|
|
155
|
+
*/
|
|
156
|
+
export const CLOSING_BRACKETS = BRACKET_PAIRS.map(([, closing]) => closing);
|
|
90
157
|
/**
|
|
91
158
|
* Character class pattern for Latin letters including European accented characters.
|
|
92
159
|
* Use inside regex character classes: `[${LATIN_LETTERS}]`
|
package/dist/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,WAAW,CAAA;AAEhC,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,QAAQ,EAAE,QAAQ;IAClB,cAAc,EAAE,QAAQ;IACxB,SAAS,EAAE,QAAQ;IACnB,UAAU,EAAE,QAAQ;IACpB,SAAS,EAAE,QAAQ;IACnB,UAAU,EAAE,QAAQ;IACpB,SAAS,EAAE,QAAQ;IACnB,MAAM,EAAE,QAAQ;IAChB,WAAW,EAAE,QAAQ;IACrB,UAAU,EAAE,QAAQ;IACpB,gBAAgB,EAAE,QAAQ;IAC1B,WAAW,EAAE,QAAQ;IACrB,UAAU,EAAE,QAAQ;IACpB,aAAa,EAAE,QAAQ;IACvB,KAAK,EAAE,QAAQ;IACf,YAAY,EAAE,QAAQ;IACtB,YAAY,EAAE,QAAQ;IACtB,YAAY,EAAE,QAAQ;IACtB,YAAY,EAAE,QAAQ;IACtB,YAAY,EAAE,QAAQ;IACtB,YAAY,EAAE,QAAQ;IACtB,YAAY,EAAE,QAAQ;IACtB,YAAY,EAAE,QAAQ;IACtB,YAAY,EAAE,QAAQ;IACtB,YAAY,EAAE,QAAQ;IACtB,YAAY,EAAE,QAAQ;IACtB,YAAY,EAAE,QAAQ;IACtB,YAAY,EAAE,QAAQ;IACtB,YAAY,EAAE,QAAQ;IACtB,YAAY,EAAE,QAAQ;IACtB,YAAY,EAAE,QAAQ;IACtB,OAAO,EAAE,QAAQ;IACjB,OAAO,EAAE,QAAQ;IACjB,KAAK,EAAE,QAAQ;IACf,iBAAiB,EAAE,QAAQ;IAC3B,kBAAkB,EAAE,QAAQ;IAC5B,iBAAiB,EAAE,QAAQ;IAC3B,kBAAkB,EAAE,QAAQ;IAC5B,0BAA0B,EAAE,QAAQ;IACpC,IAAI,EAAE,QAAQ;IACd,KAAK,EAAE,QAAQ,EAAoB,0DAA0D;IAC7F,WAAW,EAAE,QAAQ,EAAc,0DAA0D;IAC7F,kBAAkB,EAAE,QAAQ,EAAO,IAAI;IACvC,kBAAkB,EAAE,QAAQ,EAAM,IAAI;IACtC,cAAc,EAAE,QAAQ,EAAU,IAAI;IACtC,eAAe,EAAE,QAAQ,EAAS,IAAI;IACtC,+BAA+B;IAC/B,cAAc,EAAE,cAAc,EAAE,KAAK;IACrC,cAAc,EAAE,cAAc,EAAE,KAAK;IACrC,cAAc,EAAE,cAAc,EAAE,KAAK;IACrC,cAAc,EAAE,cAAc,EAAE,KAAK;IACrC,wBAAwB;IACxB,eAAe,EAAE,QAAQ,EAAE,IAAI;IAC/B,oBAAoB,EAAE,QAAQ,EAAE,IAAI;IACpC,oBAAoB,EAAE,QAAQ,EAAE,IAAI;IACpC,kBAAkB,EAAE,QAAQ,EAAE,IAAI;IAClC,WAAW,EAAE,QAAQ,EAAE,IAAI;IAC3B,4BAA4B;IAC5B,qBAAqB,EAAE,QAAQ,EAAE,IAAI;IACrC,kBAAkB,EAAE,QAAQ,EAAE,IAAI;IAClC,gBAAgB,EAAE,QAAQ,EAAE,IAAI;IAChC,eAAe,EAAE,QAAQ,EAAE,IAAI;IAC/B,mBAAmB,EAAE,QAAQ,EAAE,IAAI;IACnC,eAAe,EAAE,QAAQ,EAAE,IAAI;IAC/B,8BAA8B;IAC9B,qBAAqB,EAAE,QAAQ,EAAE,IAAI;IACrC,iBAAiB,EAAE,QAAQ,EAAE,IAAI;IACjC,qBAAqB;IACrB,oBAAoB,EAAE,QAAQ,EAAE,IAAI;IACpC,gBAAgB,EAAE,QAAQ,EAAE,IAAI;IAChC,oBAAoB;IACpB,mBAAmB,EAAE,QAAQ,EAAE,4CAA4C;
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { UNICODE_SYMBOLS } from "./constants.js";
|
|
1
|
+
export { CLOSING_BRACKETS, OPENING_PUNCTUATION, TERMINAL_PUNCTUATION, UNICODE_SYMBOLS, } from "./constants.js";
|
|
2
2
|
export { DASH_STYLES, type DashOptions, type DashStyle, dashWordJoiner, hyphenReplace, } from "./dashes.js";
|
|
3
3
|
export { nbspTransform } from "./nbsp.js";
|
|
4
4
|
export { buildProseView, definePass, type ProseNode, type ProsePass, type ProseView, replaceAllInView, type ReplaceAllOptions, withProseView, } from "./prose-view.js";
|
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,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,oBAAoB,EACpB,eAAe,GAChB,MAAM,gBAAgB,CAAA;AACvB,OAAO,EACL,WAAW,EACX,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,cAAc,EACd,aAAa,GACd,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,EACL,cAAc,EACd,UAAU,EACV,KAAK,SAAS,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;AAC3H,OAAO,EAAE,KAAK,aAAa,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAClE,YAAY,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAM9D,OAAO,EAAE,KAAK,SAAS,EAAiB,MAAM,iBAAiB,CAAA;AAC/D,OAAO,EAA0D,KAAK,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAGtH,eAAO,MAAM,0BAA0B,KAA6C,CAAA;AAqDpF;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,GAAE,gBAAqB,GAAG,IAAI,CAOnF;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,gBAAqB,GAAG,MAAM,CAE9E"}
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { UNICODE_SYMBOLS } from "./constants.js";
|
|
1
|
+
export { CLOSING_BRACKETS, OPENING_PUNCTUATION, TERMINAL_PUNCTUATION, UNICODE_SYMBOLS, } from "./constants.js";
|
|
2
2
|
export { DASH_STYLES, dashWordJoiner, hyphenReplace, } from "./dashes.js";
|
|
3
3
|
export { nbspTransform } from "./nbsp.js";
|
|
4
4
|
export { buildProseView, definePass, replaceAllInView, withProseView, } from "./prose-view.js";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/constants.ts
CHANGED
|
@@ -73,6 +73,27 @@ export const UNICODE_SYMBOLS = {
|
|
|
73
73
|
ARABIC_SEMICOLON: "\u061B", // ؛
|
|
74
74
|
// Greek punctuation
|
|
75
75
|
GREEK_QUESTION_MARK: "\u037E", // ; (visually identical to ASCII semicolon)
|
|
76
|
+
// Spanish inverted openers
|
|
77
|
+
INVERTED_EXCLAMATION: "\u00A1", // ¡
|
|
78
|
+
INVERTED_QUESTION: "\u00BF", // ¿
|
|
79
|
+
// CJK fullwidth brackets
|
|
80
|
+
FULLWIDTH_LEFT_PAREN: "\uFF08", // (
|
|
81
|
+
FULLWIDTH_RIGHT_PAREN: "\uFF09", // )
|
|
82
|
+
FULLWIDTH_LEFT_BRACKET: "\uFF3B", // [
|
|
83
|
+
FULLWIDTH_RIGHT_BRACKET: "\uFF3D", // ]
|
|
84
|
+
FULLWIDTH_LEFT_BRACE: "\uFF5B", // {
|
|
85
|
+
FULLWIDTH_RIGHT_BRACE: "\uFF5D", // }
|
|
86
|
+
// CJK ideographic brackets
|
|
87
|
+
LEFT_ANGLE_BRACKET: "\u3008", // 〈
|
|
88
|
+
RIGHT_ANGLE_BRACKET: "\u3009", // 〉
|
|
89
|
+
LEFT_DOUBLE_ANGLE_BRACKET: "\u300A", // 《
|
|
90
|
+
RIGHT_DOUBLE_ANGLE_BRACKET: "\u300B", // 》
|
|
91
|
+
LEFT_CORNER_BRACKET: "\u300C", // 「
|
|
92
|
+
RIGHT_CORNER_BRACKET: "\u300D", // 」
|
|
93
|
+
LEFT_WHITE_CORNER_BRACKET: "\u300E", // 『
|
|
94
|
+
RIGHT_WHITE_CORNER_BRACKET: "\u300F", // 』
|
|
95
|
+
LEFT_LENTICULAR_BRACKET: "\u3010", // 【
|
|
96
|
+
RIGHT_LENTICULAR_BRACKET: "\u3011", // 】
|
|
76
97
|
} as const
|
|
77
98
|
|
|
78
99
|
/** All terminal punctuation chars for regex character classes (ASCII through CJK/Arabic/Greek). */
|
|
@@ -90,6 +111,55 @@ export const TERMINAL_PUNCTUATION = [
|
|
|
90
111
|
UNICODE_SYMBOLS.GREEK_QUESTION_MARK,
|
|
91
112
|
] as const
|
|
92
113
|
|
|
114
|
+
/**
|
|
115
|
+
* Bracket pairs, opening first, ASCII through the fullwidth and CJK forms.
|
|
116
|
+
* {@link OPENING_PUNCTUATION} and {@link CLOSING_BRACKETS} are both projections
|
|
117
|
+
* of this list, so a bracket can never be listed on one side only.
|
|
118
|
+
*/
|
|
119
|
+
const BRACKET_PAIRS: readonly (readonly [string, string])[] = [
|
|
120
|
+
["(", ")"],
|
|
121
|
+
["[", "]"],
|
|
122
|
+
["{", "}"],
|
|
123
|
+
[UNICODE_SYMBOLS.FULLWIDTH_LEFT_PAREN, UNICODE_SYMBOLS.FULLWIDTH_RIGHT_PAREN],
|
|
124
|
+
[UNICODE_SYMBOLS.FULLWIDTH_LEFT_BRACKET, UNICODE_SYMBOLS.FULLWIDTH_RIGHT_BRACKET],
|
|
125
|
+
[UNICODE_SYMBOLS.FULLWIDTH_LEFT_BRACE, UNICODE_SYMBOLS.FULLWIDTH_RIGHT_BRACE],
|
|
126
|
+
[UNICODE_SYMBOLS.LEFT_ANGLE_BRACKET, UNICODE_SYMBOLS.RIGHT_ANGLE_BRACKET],
|
|
127
|
+
[UNICODE_SYMBOLS.LEFT_DOUBLE_ANGLE_BRACKET, UNICODE_SYMBOLS.RIGHT_DOUBLE_ANGLE_BRACKET],
|
|
128
|
+
[UNICODE_SYMBOLS.LEFT_CORNER_BRACKET, UNICODE_SYMBOLS.RIGHT_CORNER_BRACKET],
|
|
129
|
+
[UNICODE_SYMBOLS.LEFT_WHITE_CORNER_BRACKET, UNICODE_SYMBOLS.RIGHT_WHITE_CORNER_BRACKET],
|
|
130
|
+
[UNICODE_SYMBOLS.LEFT_LENTICULAR_BRACKET, UNICODE_SYMBOLS.RIGHT_LENTICULAR_BRACKET],
|
|
131
|
+
]
|
|
132
|
+
|
|
133
|
+
/**
|
|
134
|
+
* Punctuation that opens a construct and so binds rightward, to the text after
|
|
135
|
+
* it rather than the text before: brackets, the Spanish inverted marks, and the
|
|
136
|
+
* opening quote forms (including the low-9 openers German and Polish use).
|
|
137
|
+
* Guillemets follow the French convention where `«` opens; German inverts them.
|
|
138
|
+
*
|
|
139
|
+
* The counterpart to {@link TERMINAL_PUNCTUATION}, and like it, spans ASCII
|
|
140
|
+
* through CJK. Straight `"` and `'` are absent: their shape is ambiguous until
|
|
141
|
+
* classified, which is what {@link niceQuotes} and {@link classifyApostrophes}
|
|
142
|
+
* settle, so a consumer that wants to treat one as an opener owns that call.
|
|
143
|
+
*/
|
|
144
|
+
export const OPENING_PUNCTUATION: readonly string[] = [
|
|
145
|
+
...BRACKET_PAIRS.map(([opening]) => opening),
|
|
146
|
+
UNICODE_SYMBOLS.INVERTED_EXCLAMATION,
|
|
147
|
+
UNICODE_SYMBOLS.INVERTED_QUESTION,
|
|
148
|
+
UNICODE_SYMBOLS.LEFT_DOUBLE_QUOTE,
|
|
149
|
+
UNICODE_SYMBOLS.LEFT_SINGLE_QUOTE,
|
|
150
|
+
UNICODE_SYMBOLS.LEFT_GUILLEMET,
|
|
151
|
+
UNICODE_SYMBOLS.DOUBLE_LOW_9_QUOTE,
|
|
152
|
+
UNICODE_SYMBOLS.SINGLE_LOW_9_QUOTE,
|
|
153
|
+
]
|
|
154
|
+
|
|
155
|
+
/**
|
|
156
|
+
* Closing brackets, which may not begin a line. Scoped to brackets because the
|
|
157
|
+
* other marks barred from a line start are {@link TERMINAL_PUNCTUATION} and the
|
|
158
|
+
* closing quote forms in {@link UNICODE_SYMBOLS}; the three together are what a
|
|
159
|
+
* consumer keeps from stranding at a soft wrap.
|
|
160
|
+
*/
|
|
161
|
+
export const CLOSING_BRACKETS: readonly string[] = BRACKET_PAIRS.map(([, closing]) => closing)
|
|
162
|
+
|
|
93
163
|
/**
|
|
94
164
|
* Character class pattern for Latin letters including European accented characters.
|
|
95
165
|
* Use inside regex character classes: `[${LATIN_LETTERS}]`
|