@logtape/pretty 1.0.0-dev.231 → 1.0.0-dev.232
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 +167 -92
- package/deno.json +1 -1
- package/dist/formatter.cjs +76 -82
- package/dist/formatter.d.cts +23 -23
- package/dist/formatter.d.cts.map +1 -1
- package/dist/formatter.d.ts +23 -23
- package/dist/formatter.d.ts.map +1 -1
- package/dist/formatter.js +76 -82
- package/dist/formatter.js.map +1 -1
- package/dist/wcwidth.cjs +193 -2
- package/dist/wcwidth.js +193 -2
- package/dist/wcwidth.js.map +1 -1
- package/formatter.test.ts +24 -2
- package/formatter.ts +117 -128
- package/package.json +3 -3
- package/wcwidth.ts +210 -179
package/wcwidth.ts
CHANGED
|
@@ -9,6 +9,10 @@
|
|
|
9
9
|
* Based on Unicode 15.1.0 character width tables.
|
|
10
10
|
*/
|
|
11
11
|
|
|
12
|
+
// Pre-compiled regex for ANSI escape sequences
|
|
13
|
+
// deno-lint-ignore no-control-regex
|
|
14
|
+
const ANSI_PATTERN = /\x1b\[[0-9;]*m/g;
|
|
15
|
+
|
|
12
16
|
/**
|
|
13
17
|
* Remove all ANSI escape sequences from a string.
|
|
14
18
|
*
|
|
@@ -16,7 +20,7 @@
|
|
|
16
20
|
* @returns String with ANSI escape sequences removed
|
|
17
21
|
*/
|
|
18
22
|
export function stripAnsi(text: string): string {
|
|
19
|
-
return text.replace(
|
|
23
|
+
return text.replace(ANSI_PATTERN, "");
|
|
20
24
|
}
|
|
21
25
|
|
|
22
26
|
/**
|
|
@@ -85,6 +89,208 @@ export function wcwidth(code: number): number {
|
|
|
85
89
|
return 1;
|
|
86
90
|
}
|
|
87
91
|
|
|
92
|
+
// Zero-width character ranges (sorted for binary search)
|
|
93
|
+
const ZERO_WIDTH_RANGES: Array<[number, number]> = [
|
|
94
|
+
[0x0300, 0x036F], // Combining Diacritical Marks
|
|
95
|
+
[0x0483, 0x0489], // Hebrew combining marks
|
|
96
|
+
[0x0591, 0x05BD], // Arabic combining marks
|
|
97
|
+
[0x05C1, 0x05C2],
|
|
98
|
+
[0x05C4, 0x05C5],
|
|
99
|
+
[0x0610, 0x061A], // More Arabic combining marks
|
|
100
|
+
[0x064B, 0x065F],
|
|
101
|
+
[0x06D6, 0x06DC],
|
|
102
|
+
[0x06DF, 0x06E4],
|
|
103
|
+
[0x06E7, 0x06E8],
|
|
104
|
+
[0x06EA, 0x06ED],
|
|
105
|
+
[0x0730, 0x074A],
|
|
106
|
+
[0x07A6, 0x07B0],
|
|
107
|
+
[0x07EB, 0x07F3],
|
|
108
|
+
[0x0816, 0x0819],
|
|
109
|
+
[0x081B, 0x0823],
|
|
110
|
+
[0x0825, 0x0827],
|
|
111
|
+
[0x0829, 0x082D],
|
|
112
|
+
[0x0859, 0x085B],
|
|
113
|
+
[0x08D3, 0x08E1],
|
|
114
|
+
[0x08E3, 0x0902],
|
|
115
|
+
[0x0941, 0x0948],
|
|
116
|
+
[0x0951, 0x0957],
|
|
117
|
+
[0x0962, 0x0963],
|
|
118
|
+
[0x09C1, 0x09C4],
|
|
119
|
+
[0x09E2, 0x09E3],
|
|
120
|
+
[0x0A01, 0x0A02],
|
|
121
|
+
[0x0A41, 0x0A42],
|
|
122
|
+
[0x0A47, 0x0A48],
|
|
123
|
+
[0x0A4B, 0x0A4D],
|
|
124
|
+
[0x0A70, 0x0A71],
|
|
125
|
+
[0x0A81, 0x0A82],
|
|
126
|
+
[0x0AC1, 0x0AC5],
|
|
127
|
+
[0x0AC7, 0x0AC8],
|
|
128
|
+
[0x0AE2, 0x0AE3],
|
|
129
|
+
[0x0AFA, 0x0AFF],
|
|
130
|
+
[0x0B41, 0x0B44],
|
|
131
|
+
[0x0B55, 0x0B56],
|
|
132
|
+
[0x0B62, 0x0B63],
|
|
133
|
+
[0x0C3E, 0x0C40],
|
|
134
|
+
[0x0C46, 0x0C48],
|
|
135
|
+
[0x0C4A, 0x0C4D],
|
|
136
|
+
[0x0C55, 0x0C56],
|
|
137
|
+
[0x0C62, 0x0C63],
|
|
138
|
+
[0x0CCC, 0x0CCD],
|
|
139
|
+
[0x0CE2, 0x0CE3],
|
|
140
|
+
[0x0D00, 0x0D01],
|
|
141
|
+
[0x0D3B, 0x0D3C],
|
|
142
|
+
[0x0D62, 0x0D63],
|
|
143
|
+
[0x0DD2, 0x0DD4],
|
|
144
|
+
[0x0E34, 0x0E3A],
|
|
145
|
+
[0x0E47, 0x0E4E],
|
|
146
|
+
[0x0EB4, 0x0EBC],
|
|
147
|
+
[0x0EC8, 0x0ECD],
|
|
148
|
+
[0x0F18, 0x0F19],
|
|
149
|
+
[0x0F71, 0x0F7E],
|
|
150
|
+
[0x0F80, 0x0F84],
|
|
151
|
+
[0x0F86, 0x0F87],
|
|
152
|
+
[0x0F8D, 0x0F97],
|
|
153
|
+
[0x0F99, 0x0FBC],
|
|
154
|
+
[0x102D, 0x1030],
|
|
155
|
+
[0x1032, 0x1037],
|
|
156
|
+
[0x1039, 0x103A],
|
|
157
|
+
[0x103D, 0x103E],
|
|
158
|
+
[0x1058, 0x1059],
|
|
159
|
+
[0x105E, 0x1060],
|
|
160
|
+
[0x1071, 0x1074],
|
|
161
|
+
[0x1085, 0x1086],
|
|
162
|
+
[0x135D, 0x135F],
|
|
163
|
+
[0x1712, 0x1714],
|
|
164
|
+
[0x1732, 0x1734],
|
|
165
|
+
[0x1752, 0x1753],
|
|
166
|
+
[0x1772, 0x1773],
|
|
167
|
+
[0x17B4, 0x17B5],
|
|
168
|
+
[0x17B7, 0x17BD],
|
|
169
|
+
[0x17C9, 0x17D3],
|
|
170
|
+
[0x180B, 0x180D],
|
|
171
|
+
[0x1885, 0x1886],
|
|
172
|
+
[0x1920, 0x1922],
|
|
173
|
+
[0x1927, 0x1928],
|
|
174
|
+
[0x1939, 0x193B],
|
|
175
|
+
[0x1A17, 0x1A18],
|
|
176
|
+
[0x1A58, 0x1A5E],
|
|
177
|
+
[0x1A65, 0x1A6C],
|
|
178
|
+
[0x1A73, 0x1A7C],
|
|
179
|
+
[0x1AB0, 0x1ABE],
|
|
180
|
+
[0x1B00, 0x1B03],
|
|
181
|
+
[0x1B36, 0x1B3A],
|
|
182
|
+
[0x1B6B, 0x1B73],
|
|
183
|
+
[0x1B80, 0x1B81],
|
|
184
|
+
[0x1BA2, 0x1BA5],
|
|
185
|
+
[0x1BA8, 0x1BA9],
|
|
186
|
+
[0x1BAB, 0x1BAD],
|
|
187
|
+
[0x1BE8, 0x1BE9],
|
|
188
|
+
[0x1BEF, 0x1BF1],
|
|
189
|
+
[0x1C2C, 0x1C33],
|
|
190
|
+
[0x1C36, 0x1C37],
|
|
191
|
+
[0x1CD0, 0x1CD2],
|
|
192
|
+
[0x1CD4, 0x1CE0],
|
|
193
|
+
[0x1CE2, 0x1CE8],
|
|
194
|
+
[0x1CF8, 0x1CF9],
|
|
195
|
+
[0x1DC0, 0x1DF9],
|
|
196
|
+
[0x1DFB, 0x1DFF],
|
|
197
|
+
[0x200B, 0x200F], // Zero-width spaces
|
|
198
|
+
[0x202A, 0x202E], // Bidirectional format characters
|
|
199
|
+
[0x2060, 0x2064], // Word joiner, etc.
|
|
200
|
+
[0x2066, 0x206F], // More bidirectional
|
|
201
|
+
[0xFE00, 0xFE0F], // Variation selectors
|
|
202
|
+
[0xFE20, 0xFE2F], // Combining half marks
|
|
203
|
+
];
|
|
204
|
+
|
|
205
|
+
// Single zero-width characters
|
|
206
|
+
const ZERO_WIDTH_SINGLES = new Set([
|
|
207
|
+
0x05BF,
|
|
208
|
+
0x05C7,
|
|
209
|
+
0x0670,
|
|
210
|
+
0x0711,
|
|
211
|
+
0x07FD,
|
|
212
|
+
0x093A,
|
|
213
|
+
0x093C,
|
|
214
|
+
0x094D,
|
|
215
|
+
0x0981,
|
|
216
|
+
0x09BC,
|
|
217
|
+
0x09CD,
|
|
218
|
+
0x09FE,
|
|
219
|
+
0x0A3C,
|
|
220
|
+
0x0A51,
|
|
221
|
+
0x0A75,
|
|
222
|
+
0x0ABC,
|
|
223
|
+
0x0ACD,
|
|
224
|
+
0x0B01,
|
|
225
|
+
0x0B3C,
|
|
226
|
+
0x0B3F,
|
|
227
|
+
0x0B4D,
|
|
228
|
+
0x0B82,
|
|
229
|
+
0x0BC0,
|
|
230
|
+
0x0BCD,
|
|
231
|
+
0x0C00,
|
|
232
|
+
0x0C04,
|
|
233
|
+
0x0C81,
|
|
234
|
+
0x0CBC,
|
|
235
|
+
0x0CBF,
|
|
236
|
+
0x0CC6,
|
|
237
|
+
0x0D41,
|
|
238
|
+
0x0D44,
|
|
239
|
+
0x0D4D,
|
|
240
|
+
0x0D81,
|
|
241
|
+
0x0DCA,
|
|
242
|
+
0x0DD6,
|
|
243
|
+
0x0E31,
|
|
244
|
+
0x0EB1,
|
|
245
|
+
0x0F35,
|
|
246
|
+
0x0F37,
|
|
247
|
+
0x0F39,
|
|
248
|
+
0x0FC6,
|
|
249
|
+
0x1082,
|
|
250
|
+
0x108D,
|
|
251
|
+
0x109D,
|
|
252
|
+
0x17C6,
|
|
253
|
+
0x17DD,
|
|
254
|
+
0x18A9,
|
|
255
|
+
0x1932,
|
|
256
|
+
0x1A1B,
|
|
257
|
+
0x1A56,
|
|
258
|
+
0x1A60,
|
|
259
|
+
0x1A62,
|
|
260
|
+
0x1A7F,
|
|
261
|
+
0x1B34,
|
|
262
|
+
0x1B3C,
|
|
263
|
+
0x1B42,
|
|
264
|
+
0x1BE6,
|
|
265
|
+
0x1BED,
|
|
266
|
+
0x1CED,
|
|
267
|
+
0x1CF4,
|
|
268
|
+
0xFEFF,
|
|
269
|
+
]);
|
|
270
|
+
|
|
271
|
+
/**
|
|
272
|
+
* Binary search to check if a value is within any range
|
|
273
|
+
*/
|
|
274
|
+
function isInRanges(code: number, ranges: Array<[number, number]>): boolean {
|
|
275
|
+
let left = 0;
|
|
276
|
+
let right = ranges.length - 1;
|
|
277
|
+
|
|
278
|
+
while (left <= right) {
|
|
279
|
+
const mid = Math.floor((left + right) / 2);
|
|
280
|
+
const [start, end] = ranges[mid];
|
|
281
|
+
|
|
282
|
+
if (code >= start && code <= end) {
|
|
283
|
+
return true;
|
|
284
|
+
} else if (code < start) {
|
|
285
|
+
right = mid - 1;
|
|
286
|
+
} else {
|
|
287
|
+
left = mid + 1;
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
return false;
|
|
292
|
+
}
|
|
293
|
+
|
|
88
294
|
/**
|
|
89
295
|
* Check if a character is zero-width (combining marks, etc.)
|
|
90
296
|
* Based on wcwidth's zero-width table.
|
|
@@ -93,184 +299,7 @@ export function wcwidth(code: number): number {
|
|
|
93
299
|
* @returns True if the character has zero display width
|
|
94
300
|
*/
|
|
95
301
|
function isZeroWidth(code: number): boolean {
|
|
96
|
-
return (
|
|
97
|
-
// Combining Diacritical Marks
|
|
98
|
-
(code >= 0x0300 && code <= 0x036F) ||
|
|
99
|
-
// Hebrew combining marks
|
|
100
|
-
(code >= 0x0483 && code <= 0x0489) ||
|
|
101
|
-
// Arabic combining marks
|
|
102
|
-
(code >= 0x0591 && code <= 0x05BD) ||
|
|
103
|
-
code === 0x05BF ||
|
|
104
|
-
(code >= 0x05C1 && code <= 0x05C2) ||
|
|
105
|
-
(code >= 0x05C4 && code <= 0x05C5) ||
|
|
106
|
-
code === 0x05C7 ||
|
|
107
|
-
// More Arabic combining marks
|
|
108
|
-
(code >= 0x0610 && code <= 0x061A) ||
|
|
109
|
-
(code >= 0x064B && code <= 0x065F) ||
|
|
110
|
-
code === 0x0670 ||
|
|
111
|
-
(code >= 0x06D6 && code <= 0x06DC) ||
|
|
112
|
-
(code >= 0x06DF && code <= 0x06E4) ||
|
|
113
|
-
(code >= 0x06E7 && code <= 0x06E8) ||
|
|
114
|
-
(code >= 0x06EA && code <= 0x06ED) ||
|
|
115
|
-
code === 0x0711 ||
|
|
116
|
-
(code >= 0x0730 && code <= 0x074A) ||
|
|
117
|
-
(code >= 0x07A6 && code <= 0x07B0) ||
|
|
118
|
-
(code >= 0x07EB && code <= 0x07F3) ||
|
|
119
|
-
code === 0x07FD ||
|
|
120
|
-
// Various other combining marks
|
|
121
|
-
(code >= 0x0816 && code <= 0x0819) ||
|
|
122
|
-
(code >= 0x081B && code <= 0x0823) ||
|
|
123
|
-
(code >= 0x0825 && code <= 0x0827) ||
|
|
124
|
-
(code >= 0x0829 && code <= 0x082D) ||
|
|
125
|
-
(code >= 0x0859 && code <= 0x085B) ||
|
|
126
|
-
(code >= 0x08D3 && code <= 0x08E1) ||
|
|
127
|
-
(code >= 0x08E3 && code <= 0x0902) ||
|
|
128
|
-
code === 0x093A ||
|
|
129
|
-
code === 0x093C ||
|
|
130
|
-
(code >= 0x0941 && code <= 0x0948) ||
|
|
131
|
-
code === 0x094D ||
|
|
132
|
-
(code >= 0x0951 && code <= 0x0957) ||
|
|
133
|
-
(code >= 0x0962 && code <= 0x0963) ||
|
|
134
|
-
code === 0x0981 ||
|
|
135
|
-
code === 0x09BC ||
|
|
136
|
-
(code >= 0x09C1 && code <= 0x09C4) ||
|
|
137
|
-
code === 0x09CD ||
|
|
138
|
-
(code >= 0x09E2 && code <= 0x09E3) ||
|
|
139
|
-
(code >= 0x09FE && code <= 0x09FE) ||
|
|
140
|
-
(code >= 0x0A01 && code <= 0x0A02) ||
|
|
141
|
-
code === 0x0A3C ||
|
|
142
|
-
(code >= 0x0A41 && code <= 0x0A42) ||
|
|
143
|
-
(code >= 0x0A47 && code <= 0x0A48) ||
|
|
144
|
-
(code >= 0x0A4B && code <= 0x0A4D) ||
|
|
145
|
-
code === 0x0A51 ||
|
|
146
|
-
(code >= 0x0A70 && code <= 0x0A71) ||
|
|
147
|
-
code === 0x0A75 ||
|
|
148
|
-
(code >= 0x0A81 && code <= 0x0A82) ||
|
|
149
|
-
code === 0x0ABC ||
|
|
150
|
-
(code >= 0x0AC1 && code <= 0x0AC5) ||
|
|
151
|
-
(code >= 0x0AC7 && code <= 0x0AC8) ||
|
|
152
|
-
code === 0x0ACD ||
|
|
153
|
-
(code >= 0x0AE2 && code <= 0x0AE3) ||
|
|
154
|
-
(code >= 0x0AFA && code <= 0x0AFF) ||
|
|
155
|
-
code === 0x0B01 ||
|
|
156
|
-
code === 0x0B3C ||
|
|
157
|
-
code === 0x0B3F ||
|
|
158
|
-
(code >= 0x0B41 && code <= 0x0B44) ||
|
|
159
|
-
code === 0x0B4D ||
|
|
160
|
-
(code >= 0x0B55 && code <= 0x0B56) ||
|
|
161
|
-
(code >= 0x0B62 && code <= 0x0B63) ||
|
|
162
|
-
code === 0x0B82 ||
|
|
163
|
-
code === 0x0BC0 ||
|
|
164
|
-
code === 0x0BCD ||
|
|
165
|
-
code === 0x0C00 ||
|
|
166
|
-
code === 0x0C04 ||
|
|
167
|
-
(code >= 0x0C3E && code <= 0x0C40) ||
|
|
168
|
-
(code >= 0x0C46 && code <= 0x0C48) ||
|
|
169
|
-
(code >= 0x0C4A && code <= 0x0C4D) ||
|
|
170
|
-
(code >= 0x0C55 && code <= 0x0C56) ||
|
|
171
|
-
(code >= 0x0C62 && code <= 0x0C63) ||
|
|
172
|
-
code === 0x0C81 ||
|
|
173
|
-
code === 0x0CBC ||
|
|
174
|
-
code === 0x0CBF ||
|
|
175
|
-
code === 0x0CC6 ||
|
|
176
|
-
(code >= 0x0CCC && code <= 0x0CCD) ||
|
|
177
|
-
(code >= 0x0CE2 && code <= 0x0CE3) ||
|
|
178
|
-
(code >= 0x0D00 && code <= 0x0D01) ||
|
|
179
|
-
(code >= 0x0D3B && code <= 0x0D3C) ||
|
|
180
|
-
code === 0x0D41 ||
|
|
181
|
-
(code >= 0x0D44 && code <= 0x0D44) ||
|
|
182
|
-
code === 0x0D4D ||
|
|
183
|
-
(code >= 0x0D62 && code <= 0x0D63) ||
|
|
184
|
-
code === 0x0D81 ||
|
|
185
|
-
code === 0x0DCA ||
|
|
186
|
-
(code >= 0x0DD2 && code <= 0x0DD4) ||
|
|
187
|
-
code === 0x0DD6 ||
|
|
188
|
-
code === 0x0E31 ||
|
|
189
|
-
(code >= 0x0E34 && code <= 0x0E3A) ||
|
|
190
|
-
(code >= 0x0E47 && code <= 0x0E4E) ||
|
|
191
|
-
code === 0x0EB1 ||
|
|
192
|
-
(code >= 0x0EB4 && code <= 0x0EBC) ||
|
|
193
|
-
(code >= 0x0EC8 && code <= 0x0ECD) ||
|
|
194
|
-
(code >= 0x0F18 && code <= 0x0F19) ||
|
|
195
|
-
code === 0x0F35 ||
|
|
196
|
-
code === 0x0F37 ||
|
|
197
|
-
code === 0x0F39 ||
|
|
198
|
-
(code >= 0x0F71 && code <= 0x0F7E) ||
|
|
199
|
-
(code >= 0x0F80 && code <= 0x0F84) ||
|
|
200
|
-
(code >= 0x0F86 && code <= 0x0F87) ||
|
|
201
|
-
(code >= 0x0F8D && code <= 0x0F97) ||
|
|
202
|
-
(code >= 0x0F99 && code <= 0x0FBC) ||
|
|
203
|
-
code === 0x0FC6 ||
|
|
204
|
-
(code >= 0x102D && code <= 0x1030) ||
|
|
205
|
-
(code >= 0x1032 && code <= 0x1037) ||
|
|
206
|
-
(code >= 0x1039 && code <= 0x103A) ||
|
|
207
|
-
(code >= 0x103D && code <= 0x103E) ||
|
|
208
|
-
(code >= 0x1058 && code <= 0x1059) ||
|
|
209
|
-
(code >= 0x105E && code <= 0x1060) ||
|
|
210
|
-
(code >= 0x1071 && code <= 0x1074) ||
|
|
211
|
-
code === 0x1082 ||
|
|
212
|
-
(code >= 0x1085 && code <= 0x1086) ||
|
|
213
|
-
code === 0x108D ||
|
|
214
|
-
code === 0x109D ||
|
|
215
|
-
(code >= 0x135D && code <= 0x135F) ||
|
|
216
|
-
(code >= 0x1712 && code <= 0x1714) ||
|
|
217
|
-
(code >= 0x1732 && code <= 0x1734) ||
|
|
218
|
-
(code >= 0x1752 && code <= 0x1753) ||
|
|
219
|
-
(code >= 0x1772 && code <= 0x1773) ||
|
|
220
|
-
(code >= 0x17B4 && code <= 0x17B5) ||
|
|
221
|
-
(code >= 0x17B7 && code <= 0x17BD) ||
|
|
222
|
-
code === 0x17C6 ||
|
|
223
|
-
(code >= 0x17C9 && code <= 0x17D3) ||
|
|
224
|
-
code === 0x17DD ||
|
|
225
|
-
(code >= 0x180B && code <= 0x180D) ||
|
|
226
|
-
(code >= 0x1885 && code <= 0x1886) ||
|
|
227
|
-
code === 0x18A9 ||
|
|
228
|
-
(code >= 0x1920 && code <= 0x1922) ||
|
|
229
|
-
(code >= 0x1927 && code <= 0x1928) ||
|
|
230
|
-
code === 0x1932 ||
|
|
231
|
-
(code >= 0x1939 && code <= 0x193B) ||
|
|
232
|
-
(code >= 0x1A17 && code <= 0x1A18) ||
|
|
233
|
-
code === 0x1A1B ||
|
|
234
|
-
code === 0x1A56 ||
|
|
235
|
-
(code >= 0x1A58 && code <= 0x1A5E) ||
|
|
236
|
-
code === 0x1A60 ||
|
|
237
|
-
code === 0x1A62 ||
|
|
238
|
-
(code >= 0x1A65 && code <= 0x1A6C) ||
|
|
239
|
-
(code >= 0x1A73 && code <= 0x1A7C) ||
|
|
240
|
-
code === 0x1A7F ||
|
|
241
|
-
(code >= 0x1AB0 && code <= 0x1ABE) ||
|
|
242
|
-
(code >= 0x1B00 && code <= 0x1B03) ||
|
|
243
|
-
code === 0x1B34 ||
|
|
244
|
-
(code >= 0x1B36 && code <= 0x1B3A) ||
|
|
245
|
-
code === 0x1B3C ||
|
|
246
|
-
code === 0x1B42 ||
|
|
247
|
-
(code >= 0x1B6B && code <= 0x1B73) ||
|
|
248
|
-
(code >= 0x1B80 && code <= 0x1B81) ||
|
|
249
|
-
(code >= 0x1BA2 && code <= 0x1BA5) ||
|
|
250
|
-
(code >= 0x1BA8 && code <= 0x1BA9) ||
|
|
251
|
-
(code >= 0x1BAB && code <= 0x1BAD) ||
|
|
252
|
-
code === 0x1BE6 ||
|
|
253
|
-
(code >= 0x1BE8 && code <= 0x1BE9) ||
|
|
254
|
-
code === 0x1BED ||
|
|
255
|
-
(code >= 0x1BEF && code <= 0x1BF1) ||
|
|
256
|
-
(code >= 0x1C2C && code <= 0x1C33) ||
|
|
257
|
-
(code >= 0x1C36 && code <= 0x1C37) ||
|
|
258
|
-
(code >= 0x1CD0 && code <= 0x1CD2) ||
|
|
259
|
-
(code >= 0x1CD4 && code <= 0x1CE0) ||
|
|
260
|
-
(code >= 0x1CE2 && code <= 0x1CE8) ||
|
|
261
|
-
code === 0x1CED ||
|
|
262
|
-
code === 0x1CF4 ||
|
|
263
|
-
(code >= 0x1CF8 && code <= 0x1CF9) ||
|
|
264
|
-
(code >= 0x1DC0 && code <= 0x1DF9) ||
|
|
265
|
-
(code >= 0x1DFB && code <= 0x1DFF) ||
|
|
266
|
-
(code >= 0x200B && code <= 0x200F) || // Zero-width spaces
|
|
267
|
-
(code >= 0x202A && code <= 0x202E) || // Bidirectional format characters
|
|
268
|
-
(code >= 0x2060 && code <= 0x2064) || // Word joiner, etc.
|
|
269
|
-
(code >= 0x2066 && code <= 0x206F) || // More bidirectional
|
|
270
|
-
code === 0xFEFF || // Zero-width no-break space
|
|
271
|
-
(code >= 0xFE00 && code <= 0xFE0F) || // Variation selectors
|
|
272
|
-
(code >= 0xFE20 && code <= 0xFE2F) // Combining half marks
|
|
273
|
-
);
|
|
302
|
+
return ZERO_WIDTH_SINGLES.has(code) || isInRanges(code, ZERO_WIDTH_RANGES);
|
|
274
303
|
}
|
|
275
304
|
|
|
276
305
|
/**
|
|
@@ -281,6 +310,7 @@ function isZeroWidth(code: number): boolean {
|
|
|
281
310
|
* @returns True if the character has width 2
|
|
282
311
|
*/
|
|
283
312
|
function isWideCharacter(code: number): boolean {
|
|
313
|
+
// cSpell: disable
|
|
284
314
|
return (
|
|
285
315
|
// Based on wcwidth table_wide.py for Unicode 15.1.0
|
|
286
316
|
(code >= 0x1100 && code <= 0x115F) || // Hangul Jamo
|
|
@@ -380,4 +410,5 @@ function isWideCharacter(code: number): boolean {
|
|
|
380
410
|
(code >= 0x20000 && code <= 0x2FFFD) || // CJK Extension B
|
|
381
411
|
(code >= 0x30000 && code <= 0x3FFFD) // CJK Extension C
|
|
382
412
|
);
|
|
413
|
+
// cSpell: enable
|
|
383
414
|
}
|