diff options
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.js | 129 |
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; + } +} |