summaryrefslogtreecommitdiff
path: root/bin/wiki/ImportarDesdeURL/node_modules/chrono-node/src/parsers/de/DECasualDateParser.js
diff options
context:
space:
mode:
Diffstat (limited to 'bin/wiki/ImportarDesdeURL/node_modules/chrono-node/src/parsers/de/DECasualDateParser.js')
-rw-r--r--bin/wiki/ImportarDesdeURL/node_modules/chrono-node/src/parsers/de/DECasualDateParser.js99
1 files changed, 99 insertions, 0 deletions
diff --git a/bin/wiki/ImportarDesdeURL/node_modules/chrono-node/src/parsers/de/DECasualDateParser.js b/bin/wiki/ImportarDesdeURL/node_modules/chrono-node/src/parsers/de/DECasualDateParser.js
new file mode 100644
index 00000000..6f4daa04
--- /dev/null
+++ b/bin/wiki/ImportarDesdeURL/node_modules/chrono-node/src/parsers/de/DECasualDateParser.js
@@ -0,0 +1,99 @@
+/*
+
+
+*/
+
+var moment = require('moment');
+var Parser = require('../parser').Parser;
+var ParsedResult = require('../../result').ParsedResult;
+
+var PATTERN = new RegExp(
+ '(\\W|^)(' +
+ 'jetzt|' +
+ '(?:heute|diesen)\\s*(morgen|vormittag|mittag|nachmittag|abend)|' +
+ '(?:heute|diese)\\s*nacht|' +
+ 'heute|' +
+ '(?:(?:ü|ue)ber)?morgen(?:\\s*(morgen|vormittag|mittag|nachmittag|abend|nacht))?|' +
+ '(?:vor)?gestern(?:\\s*(morgen|vormittag|mittag|nachmittag|abend|nacht))?|' +
+ 'letzte\\s*nacht' +
+ ')(?=\\W|$)', 'i');
+
+exports.Parser = function DECasualDateParser() {
+
+ Parser.apply(this, arguments);
+
+ this.pattern = function() { return PATTERN; }
+
+ this.extract = function(text, ref, match, opt) {
+ var text = match[0].substr(match[1].length);
+ var index = match.index + match[1].length;
+ var result = new ParsedResult({
+ index: index,
+ text: text,
+ ref: ref,
+ });
+
+ var refMoment = moment(ref);
+ var startMoment = refMoment.clone();
+ var lowerText = text.toLowerCase();
+
+ if (/(?:heute|diese)\s*nacht/.test(lowerText)) {
+ // Normally means this coming midnight
+ result.start.imply('hour', 22);
+ result.start.imply('meridiem', 1);
+ } else if (/^(?:ü|ue)bermorgen/.test(lowerText)) {
+ startMoment.add(refMoment.hour() > 1 ? 2 : 1, 'day');
+ } else if (/^morgen/.test(lowerText)) {
+ // Check not "Tomorrow" on late night
+ if (refMoment.hour() > 1) {
+ startMoment.add(1, 'day');
+ }
+ } else if (/^gestern/.test(lowerText)) {
+ startMoment.add(-1, 'day');
+ } else if (/^vorgestern/.test(lowerText)) {
+ startMoment.add(-2, 'day');
+ } else if (/letzte\s*nacht/.test(lowerText)) {
+ result.start.imply('hour', 0);
+ if (refMoment.hour() > 6) {
+ startMoment.add(-1, 'day');
+ }
+ } else if (lowerText === 'jetzt') {
+ result.start.imply('hour', refMoment.hour());
+ result.start.imply('minute', refMoment.minute());
+ result.start.imply('second', refMoment.second());
+ result.start.imply('millisecond', refMoment.millisecond());
+ }
+
+ var secondMatch = match[3] || match[4] || match[5];
+ if (secondMatch) {
+ switch (secondMatch.toLowerCase()) {
+ case 'morgen':
+ result.start.imply('hour', 6);
+ break;
+ case 'vormittag':
+ result.start.imply('hour', 9);
+ break;
+ case 'mittag':
+ result.start.imply('hour', 12);
+ break;
+ case 'nachmittag':
+ result.start.imply('hour', 15);
+ result.start.imply('meridiem', 1);
+ break;
+ case 'abend':
+ result.start.imply('hour', 18);
+ result.start.imply('meridiem', 1);
+ break;
+ case 'nacht':
+ result.start.imply('hour', 0);
+ break;
+ }
+ }
+
+ result.start.assign('day', startMoment.date())
+ result.start.assign('month', startMoment.month() + 1)
+ result.start.assign('year', startMoment.year())
+ result.tags['DECasualDateParser'] = true;
+ return result;
+ }
+}