UNPKG

chrono-node

Version:

A natural language date parser in Javascript

67 lines (46 loc) 1.7 kB
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.option = option; 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 || {}; 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.parse = function () { return exports.casual.parse.apply(exports.casual, arguments); } exports.parseDate = function () { return exports.casual.parseDate.apply(exports.casual, arguments); }