summaryrefslogtreecommitdiff
path: root/bin/wiki/ImportarDesdeURL/node_modules/chrono-node/src/parsers/es/ESCasualDateParser.js
diff options
context:
space:
mode:
Diffstat (limited to 'bin/wiki/ImportarDesdeURL/node_modules/chrono-node/src/parsers/es/ESCasualDateParser.js')
-rw-r--r--bin/wiki/ImportarDesdeURL/node_modules/chrono-node/src/parsers/es/ESCasualDateParser.js129
1 files changed, 129 insertions, 0 deletions
diff --git a/bin/wiki/ImportarDesdeURL/node_modules/chrono-node/src/parsers/es/ESCasualDateParser.js b/bin/wiki/ImportarDesdeURL/node_modules/chrono-node/src/parsers/es/ESCasualDateParser.js
new file mode 100644
index 00000000..ebd53892
--- /dev/null
+++ b/bin/wiki/ImportarDesdeURL/node_modules/chrono-node/src/parsers/es/ESCasualDateParser.js
@@ -0,0 +1,129 @@
+/*
+
+
+*/
+
+var moment = require('moment');
+var Parser = require('../parser').Parser;
+var ParsedResult = require('../../result').ParsedResult;
+
+/*
+ Valid patterns:
+ - esta mañana -> today in the morning
+ - esta tarde -> today in the afternoon/evening
+ - esta noche -> tonight
+ - ayer por la mañana -> yesterday in the morning
+ - ayer por la tarde -> yesterday in the afternoon/evening
+ - ayer por la noche -> yesterday at night
+ - mañana por la mañana -> tomorrow in the morning
+ - mañana por la tarde -> tomorrow in the afternoon/evening
+ - mañana por la noche -> tomorrow at night
+ - anoche -> tomorrow at night
+ - hoy -> today
+ - ayer -> yesterday
+ - mañana -> tomorrow
+ */
+var PATTERN = /(\W|^)(ahora|esta\s*(mañana|tarde|noche)|(ayer|mañana)\s*por\s*la\s*(mañana|tarde|noche)|hoy|mañana|ayer|anoche)(?=\W|$)/i;
+
+exports.Parser = function ESCasualDateParser(){
+
+ 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().replace(/\s+/g, ' ');
+
+ if(lowerText == 'mañana'){
+
+ // Check not "Tomorrow" on late night
+ if(refMoment.hour() > 1) {
+ startMoment.add(1, 'day');
+ }
+
+ } else if(lowerText == 'ayer') {
+
+ startMoment.add(-1, 'day');
+ }
+ else if(lowerText == 'anoche') {
+
+ result.start.imply('hour', 0);
+ if (refMoment.hour() > 6) {
+ startMoment.add(-1, 'day');
+ }
+
+ } else if (lowerText.match("esta")) {
+
+ var secondMatch = match[3].toLowerCase();
+ if (secondMatch == "tarde") {
+
+ result.start.imply('hour', 18);
+
+ } else if (secondMatch == "mañana") {
+
+ result.start.imply('hour', 6);
+
+ } else if (secondMatch == "noche") {
+
+ // Normally means this coming midnight
+ result.start.imply('hour', 22);
+ result.start.imply('meridiem', 1);
+
+ }
+ } else if (lowerText.match(/por\s*la/)) {
+
+ var firstMatch = match[4].toLowerCase();
+ if (firstMatch === 'ayer') {
+
+ startMoment.add(-1, 'day');
+
+ } else if (firstMatch === 'mañana') {
+
+ startMoment.add(1, 'day');
+
+ }
+
+ var secondMatch = match[5].toLowerCase();
+ if (secondMatch == "tarde") {
+
+ result.start.imply('hour', 18);
+
+ } else if (secondMatch == "mañana") {
+
+ result.start.imply('hour', 9);
+
+ } else if (secondMatch == "noche") {
+
+ // Normally means this coming midnight
+ result.start.imply('hour', 22);
+ result.start.imply('meridiem', 1);
+
+ }
+
+ } else if (lowerText.match("ahora")) {
+
+ result.start.imply('hour', refMoment.hour());
+ result.start.imply('minute', refMoment.minute());
+ result.start.imply('second', refMoment.second());
+ result.start.imply('millisecond', refMoment.millisecond());
+
+ }
+
+ result.start.assign('day', startMoment.date())
+ result.start.assign('month', startMoment.month() + 1)
+ result.start.assign('year', startMoment.year())
+ result.tags['ESCasualDateParser'] = true;
+ return result;
+ }
+}