blob: 9d023ba09b2856f28a4403f236485f73c8c54960 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
|
/*
*/
var Refiner = require('../refiner').Refiner;
var PATTERN = new RegExp("\\s*('s|on)?\\s*");
var WEEK_TAG = 'ENWeekExpressionParser';
var WEEK_DAY_TAG = 'ENDayOfWeekDateFormatParser';
exports.Refiner = function ENMergeDateRangeRefiner() {
Refiner.call(this);
this.refine = function(text, results, opt) {
if (results.length < 2) return results;
var mergedResult = [];
var currResult = null;
var prevResult = null;
for (var i = 1; i < results.length; i++) {
currResult = results[i];
prevResult = results[i - 1];
var weekResult = null;
var weekDayResult = null;
if (prevResult.tags.contains(WEEK_TAG) && currResult.tags.contains(WEEK_DAY_TAG)) {
weekResult = prevResult;
weekDayResult = currResult;
} else if (prevResult.tags.contains(WEEK_DAY_TAG) && currResult.tags.contains(WEEK_TAG)) {
weekResult = currResult;
weekDayResult = prevResult;
}
if (weekResult != null && weekDayResult != null
&& checkPatternBetween(text, prevResult, currResult)
&& checkMergingCompatible(weekResult, weekDayResult)) {
prevResult = mergeResult(text, weekResult, weekDayResult);
currResult = null;
i += 1;
}
mergedResult.add(prevResult);
}
if (currResult != null) {
mergedResult.add(currResult);
}
return mergedResult;
}
}
|