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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
|
var options = exports.options = require('./options');
exports.parser = require('./parsers/parser');
exports.refiner = require('./refiners/refiner');
exports.Parser = exports.parser.Parser;
exports.Refiner = exports.refiner.Refiner;
exports.Filter = exports.refiner.Filter;
exports.ParsedResult = require('./result').ParsedResult;
exports.ParsedComponents = require('./result').ParsedComponents;
var Chrono = function(option) {
option = option || exports.options.casualOption();
this.parsers = new Object(option.parsers);
this.refiners = new Object(option.refiners);
};
Chrono.prototype.parse = function(text, refDate, opt) {
refDate = refDate || new Date();
opt = opt || {};
opt.forwardDate = opt.forwardDate || opt.forwardDate;
var allResults = [];
this.parsers.forEach(function (parser) {
var results = parser.execute(text, refDate, opt);
allResults = allResults.concat(results);
});
allResults.sort(function(a, b) {
return a.index - b.index;
});
this.refiners.forEach(function (refiner) {
allResults = refiner.refine(text, allResults, opt);
});
return allResults;
};
Chrono.prototype.parseDate = function(text, refDate, opt) {
var results = this.parse(text, refDate, opt);
if (results.length > 0) {
return results[0].start.date();
}
return null;
};
exports.Chrono = Chrono;
exports.strict = new Chrono( options.strictOption() );
exports.casual = new Chrono( options.casualOption() );
exports.en = new Chrono( options.mergeOptions([
options.en.casual, options.commonPostProcessing]));
exports.en_GB = new Chrono( options.mergeOptions([
options.en_GB.casual, options.commonPostProcessing]));
exports.de = new Chrono( options.mergeOptions([
options.de.casual, options.en, options.commonPostProcessing]));
exports.es = new Chrono( options.mergeOptions([
options.es.casual, options.en, options.commonPostProcessing]));
exports.fr = new Chrono( options.mergeOptions([
options.fr.casual, options.en, options.commonPostProcessing]));
exports.ja = new Chrono( options.mergeOptions([
options.ja.casual, options.en, options.commonPostProcessing]));
exports.parse = function () {
return exports.casual.parse.apply(exports.casual, arguments);
};
exports.parseDate = function () {
return exports.casual.parseDate.apply(exports.casual, arguments);
};
|