From 070afc64c817e728603b8088d63f84c502970850 Mon Sep 17 00:00:00 2001 From: Labhansh Agrawal Date: Wed, 24 Nov 2021 12:53:10 +0000 Subject: [PATCH 1/2] trycatch characterJoiner handlers --- src/browser/services/CharacterJoinerService.ts | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/browser/services/CharacterJoinerService.ts b/src/browser/services/CharacterJoinerService.ts index ea65c29b..9cef9fea 100644 --- a/src/browser/services/CharacterJoinerService.ts +++ b/src/browser/services/CharacterJoinerService.ts @@ -176,10 +176,20 @@ export class CharacterJoinerService implements ICharacterJoinerService { // At this point we already know that there is at least one joiner so // we can just pull its value and assign it directly rather than // merging it into an empty array, which incurs unnecessary writes. - const joinedRanges: [number, number][] = this._characterJoiners[0].handler(text); + let joinedRanges: [number, number][] = []; + try { + joinedRanges = this._characterJoiners[0].handler(text); + } catch (error) { + console.error(error); + } for (let i = 1; i < this._characterJoiners.length; i++) { // We merge any overlapping ranges across the different joiners - const joinerRanges = this._characterJoiners[i].handler(text); + let joinerRanges: [number, number][] = []; + try { + joinerRanges = this._characterJoiners[i].handler(text); + } catch (error) { + console.error(error); + } for (let j = 0; j < joinerRanges.length; j++) { CharacterJoinerService._mergeRanges(joinedRanges, joinerRanges[j]); } From d10d5be222173c1d21409959bc92b97d8506fcd2 Mon Sep 17 00:00:00 2001 From: Labhansh Agrawal Date: Thu, 25 Nov 2021 00:11:44 +0530 Subject: [PATCH 2/2] make requested changes --- src/browser/services/CharacterJoinerService.ts | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/src/browser/services/CharacterJoinerService.ts b/src/browser/services/CharacterJoinerService.ts index 9cef9fea..ca4f1984 100644 --- a/src/browser/services/CharacterJoinerService.ts +++ b/src/browser/services/CharacterJoinerService.ts @@ -176,26 +176,25 @@ export class CharacterJoinerService implements ICharacterJoinerService { // At this point we already know that there is at least one joiner so // we can just pull its value and assign it directly rather than // merging it into an empty array, which incurs unnecessary writes. - let joinedRanges: [number, number][] = []; + let allJoinedRanges: [number, number][] = []; try { - joinedRanges = this._characterJoiners[0].handler(text); + allJoinedRanges = this._characterJoiners[0].handler(text); } catch (error) { console.error(error); } for (let i = 1; i < this._characterJoiners.length; i++) { // We merge any overlapping ranges across the different joiners - let joinerRanges: [number, number][] = []; try { - joinerRanges = this._characterJoiners[i].handler(text); + const joinerRanges = this._characterJoiners[i].handler(text); + for (let j = 0; j < joinerRanges.length; j++) { + CharacterJoinerService._mergeRanges(allJoinedRanges, joinerRanges[j]); + } } catch (error) { console.error(error); } - for (let j = 0; j < joinerRanges.length; j++) { - CharacterJoinerService._mergeRanges(joinedRanges, joinerRanges[j]); - } } - this._stringRangesToCellRanges(joinedRanges, lineData, startCol); - return joinedRanges; + this._stringRangesToCellRanges(allJoinedRanges, lineData, startCol); + return allJoinedRanges; } /**