You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@annotator.apache.org by ge...@apache.org on 2020/11/20 21:21:07 UTC

[incubator-annotator] 09/14: Compare *extra* pre/suffix lengths (ignore sunk costs)

This is an automated email from the ASF dual-hosted git repository.

gerben pushed a commit to branch import-dom-seek
in repository https://gitbox.apache.org/repos/asf/incubator-annotator.git

commit 8459b0e7a0e455f6bd6c124d7a8f45479a13bb59
Author: Gerben <ge...@treora.com>
AuthorDate: Fri Nov 20 13:02:16 2020 +0100

    Compare *extra* pre/suffix lengths (ignore sunk costs)
---
 packages/dom/src/text-quote/describe.ts | 11 ++++-------
 1 file changed, 4 insertions(+), 7 deletions(-)

diff --git a/packages/dom/src/text-quote/describe.ts b/packages/dom/src/text-quote/describe.ts
index ae79ad0..81cc4fa 100644
--- a/packages/dom/src/text-quote/describe.ts
+++ b/packages/dom/src/text-quote/describe.ts
@@ -95,20 +95,17 @@ async function abstractDescribeTextQuote<TChunk extends Chunk<string>>(
     seeker1.seekToChunk(target.startChunk, target.startIndex - prefix.length);
     seeker2.seekToChunk(unintendedMatch.startChunk, unintendedMatch.startIndex - prefix.length);
     const extraPrefix = readUntilDifferent(seeker1, seeker2, true);
-    let sufficientPrefix = extraPrefix !== undefined ? extraPrefix + prefix : undefined;
 
     // Count how many characters we’d need as a suffix to disqualify this match.
     seeker1.seekToChunk(target.endChunk, target.endIndex + suffix.length);
     seeker2.seekToChunk(unintendedMatch.endChunk, unintendedMatch.endIndex + suffix.length);
     const extraSuffix = readUntilDifferent(seeker1, seeker2, false);
-    let sufficientSuffix = extraSuffix !== undefined ? suffix + extraSuffix : undefined;
 
     // Use either the prefix or suffix, whichever is shortest.
-    if (sufficientPrefix !== undefined && (sufficientSuffix === undefined || sufficientPrefix.length <= sufficientSuffix.length)) {
-      prefix = sufficientPrefix;
-      // seeker.seekBy(sufficientPrefix.length - prefix.length) // Would be required if we’d skip the processed part.
-    } else if (sufficientSuffix !== undefined) {
-      suffix = sufficientSuffix;
+    if (extraPrefix !== undefined && (extraSuffix === undefined || extraPrefix.length <= extraSuffix.length)) {
+      prefix = extraPrefix + prefix;
+    } else if (extraSuffix !== undefined) {
+      suffix = suffix + extraSuffix;
     } else {
       throw new Error('Target cannot be disambiguated; how could that have happened‽');
     }