summaryrefslogtreecommitdiff
path: root/bin/wiki/ImportarDesdeURL/node_modules/chrono-node/src/refiners/en/ENMergeWeekdayRefiner.js
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;
	}



}