UNPKG

1.48 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3exports.MergingRefiner = exports.Filter = void 0;
4class Filter {
5 refine(context, results) {
6 return results.filter((r) => this.isValid(context, r));
7 }
8}
9exports.Filter = Filter;
10class MergingRefiner {
11 refine(context, results) {
12 if (results.length < 2) {
13 return results;
14 }
15 const mergedResults = [];
16 let curResult = results[0];
17 let nextResult = null;
18 for (let i = 1; i < results.length; i++) {
19 nextResult = results[i];
20 const textBetween = context.text.substring(curResult.index + curResult.text.length, nextResult.index);
21 if (!this.shouldMergeResults(textBetween, curResult, nextResult, context)) {
22 mergedResults.push(curResult);
23 curResult = nextResult;
24 }
25 else {
26 const left = curResult;
27 const right = nextResult;
28 const mergedResult = this.mergeResults(textBetween, left, right, context);
29 context.debug(() => {
30 console.log(`${this.constructor.name} merged ${left} and ${right} into ${mergedResult}`);
31 });
32 curResult = mergedResult;
33 }
34 }
35 if (curResult != null) {
36 mergedResults.push(curResult);
37 }
38 return mergedResults;
39 }
40}
41exports.MergingRefiner = MergingRefiner;