216
217
constructor(languageId: string, _brackets: readonly CharacterPair[]) {
219
>
220
>
this.brackets = brackets.map((b, index) => {
221
>
return new RichEditBracket(
222
>
languageId,
223
>
index,
224
>
b.open,
225
>
b.close,
226
>
getRegexForBracketPair(b.open, b.close, brackets, index),
227
>
getReversedRegexForBracketPair(b.open, b.close, brackets, index)
228
>
);
229
>
});
230
>
231
>
this.forwardRegex = getRegexForBrackets(this.brackets);
232
>
this.reversedRegex = getReversedRegexForBrackets(this.brackets);
233
>
234
>
this.textIsBracket = {};
235
>
this.textIsOpenBracket = {};
236
>
237
>
this.maxBracketLength = 0;
238
>
for (const bracket of this.brackets) {
239
>
for (const open of bracket.open) {
240
>
this.textIsBracket[open] = bracket;
241
>
this.textIsOpenBracket[open] = true;
242
>
this.maxBracketLength = Math.max(this.maxBracketLength, open.length);
243
>
}
244
>
for (const close of bracket.close) {
245
>
this.textIsBracket[close] = bracket;
246
>
this.textIsOpenBracket[close] = false;
247
>
this.maxBracketLength = Math.max(this.maxBracketLength, close.length);
248
>
}
249
>
}
250
>
}
251
}
252
253
>
function collectSuperstrings(str: string, brackets: InternalBracket[], currentIndex: number, dest: string[]): void {
richEditBrackets.ts
254
>
for (let i = 0, len = brackets.length; i < len; i++) {
255
>
if (i === currentIndex) {
256
>
continue;
257
>
}
258
>
const bracket = brackets[i];
259
>
for (const open of bracket.open) {
260
>
if (open.indexOf(str) >= 0) {
261
dest.push(open);
262
}
264
>
for (const close of bracket.close) {
265
>
if (close.indexOf(str) >= 0) {
266
dest.push(close);
267
}
269
>
}
270
>
}
271
273
>
return a.length - b.length;
274
>
}
275
277
>
if (arr.length <= 1) {
278
return arr;
279
}
281
>
const seen = new Set<string>();
282
>
for (const element of arr) {
283
>
if (seen.has(element)) {
284
continue;
285
}
287
>
seen.add(element);
288
>
}
289
>
return result;
290
>
}
291
292
/**