diff options
Diffstat (limited to 'bin/wiki/ImportarDesdeURL/node_modules/chrono-node/src/refiners/ForwardDateRefiner.js')
-rw-r--r-- | bin/wiki/ImportarDesdeURL/node_modules/chrono-node/src/refiners/ForwardDateRefiner.js | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/bin/wiki/ImportarDesdeURL/node_modules/chrono-node/src/refiners/ForwardDateRefiner.js b/bin/wiki/ImportarDesdeURL/node_modules/chrono-node/src/refiners/ForwardDateRefiner.js new file mode 100644 index 00000000..5c2f67e5 --- /dev/null +++ b/bin/wiki/ImportarDesdeURL/node_modules/chrono-node/src/refiners/ForwardDateRefiner.js @@ -0,0 +1,58 @@ +/* + Enforce 'forwardDate' option to on the results. When there are missing component, + e.g. "March 12-13 (without year)" or "Thursday", the refiner will try to adjust the result + into the future instead of the past. +*/ +var moment = require('moment'); +var Refiner = require('./refiner').Refiner; + +exports.Refiner = function ForwardDateRefiner() { + Refiner.call(this); + + this.refine = function(text, results, opt) { + + if (!opt['forwardDate']) { + return results; + } + + results.forEach(function(result) { + + var refMoment = moment(result.ref); + + if (result.start.isCertain('day') && result.start.isCertain('month') && + !result.start.isCertain('year') && + refMoment.isAfter(result.start.moment()) + ) { + // Adjust year into the future + for (var i=0; i < 3 && refMoment.isAfter(result.start.moment()); i++) { + result.start.imply('year', result.start.get('year') + 1); + + if (result.end && !result.end.isCertain('year')) { + result.end.imply('year', result.end.get('year') + 1); + } + } + + result.tags['ExtractTimezoneOffsetRefiner'] = true; + } + + if (!result.start.isCertain('day') && !result.start.isCertain('month') && !result.start.isCertain('year') && + result.start.isCertain('weekday') && + refMoment.isAfter(result.start.moment()) + ) { + // Adjust date to the coming week + if (refMoment.day() > result.start.get('weekday')) { + refMoment.day(result.start.get('weekday') + 7); + } else { + refMoment.day(result.start.get('weekday')); + } + + result.start.imply('day', refMoment.date()); + result.start.imply('month', refMoment.month() + 1); + result.start.imply('year', refMoment.year()); + result.tags['ExtractTimezoneOffsetRefiner'] = true; + } + }); + + return results; + } +}; |