UNPKG

1.35 kBJavaScriptView Raw
1export class Filter {
2 refine(context, results) {
3 return results.filter((r) => this.isValid(context, r));
4 }
5}
6export class MergingRefiner {
7 refine(context, results) {
8 if (results.length < 2) {
9 return results;
10 }
11 const mergedResults = [];
12 let curResult = results[0];
13 let nextResult = null;
14 for (let i = 1; i < results.length; i++) {
15 nextResult = results[i];
16 const textBetween = context.text.substring(curResult.index + curResult.text.length, nextResult.index);
17 if (!this.shouldMergeResults(textBetween, curResult, nextResult, context)) {
18 mergedResults.push(curResult);
19 curResult = nextResult;
20 }
21 else {
22 const left = curResult;
23 const right = nextResult;
24 const mergedResult = this.mergeResults(textBetween, left, right, context);
25 context.debug(() => {
26 console.log(`${this.constructor.name} merged ${left} and ${right} into ${mergedResult}`);
27 });
28 curResult = mergedResult;
29 }
30 }
31 if (curResult != null) {
32 mergedResults.push(curResult);
33 }
34 return mergedResults;
35 }
36}
37//# sourceMappingURL=abstractRefiners.js.map
\No newline at end of file