1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | exports.MergingRefiner = exports.Filter = void 0;
|
4 | class Filter {
|
5 | refine(context, results) {
|
6 | return results.filter((r) => this.isValid(context, r));
|
7 | }
|
8 | }
|
9 | exports.Filter = Filter;
|
10 | class 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 | }
|
41 | exports.MergingRefiner = MergingRefiner;
|