diff options
Diffstat (limited to 'bin/wiki/ImportarDesdeURL/node_modules/chrono-node/src/parsers/en/ENSlashDateFormatStartWithYearParser.js')
-rw-r--r-- | bin/wiki/ImportarDesdeURL/node_modules/chrono-node/src/parsers/en/ENSlashDateFormatStartWithYearParser.js | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/bin/wiki/ImportarDesdeURL/node_modules/chrono-node/src/parsers/en/ENSlashDateFormatStartWithYearParser.js b/bin/wiki/ImportarDesdeURL/node_modules/chrono-node/src/parsers/en/ENSlashDateFormatStartWithYearParser.js new file mode 100644 index 00000000..03c90077 --- /dev/null +++ b/bin/wiki/ImportarDesdeURL/node_modules/chrono-node/src/parsers/en/ENSlashDateFormatStartWithYearParser.js @@ -0,0 +1,54 @@ +/* + Date format with slash "/" between numbers like ENSlashDateFormatParser, + but this parser expect year before month and date. + - YYYY/MM/DD + - YYYY-MM-DD + - YYYY.MM.DD +*/ +var moment = require('moment'); +var Parser = require('../parser').Parser; +var ParsedResult = require('../../result').ParsedResult; +var util = require('../../utils/EN'); + +var PATTERN = new RegExp('(\\W|^)' + + '([0-9]{4})[\\-\\.\\/]' + + '((?:' + util.MONTH_PATTERN + '|[0-9]{1,2}))[\\-\\.\\/]' + + '([0-9]{1,2})' + + '(?=\\W|$)', 'i'); + +var YEAR_NUMBER_GROUP = 2; +var MONTH_NUMBER_GROUP = 3; +var DATE_NUMBER_GROUP = 4; + +exports.Parser = function ENSlashDateFormatStartWithYearParser(){ + 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({ + text: text, + index: index, + ref: ref, + }) + + var month = match[MONTH_NUMBER_GROUP].toLowerCase(); + month = util.MONTH_OFFSET[month] | month; + + result.start.assign('year', parseInt(match[YEAR_NUMBER_GROUP])); + result.start.assign('month', parseInt(month)); + result.start.assign('day', parseInt(match[DATE_NUMBER_GROUP])); + + if (moment(result.start.get('month')) > 12 || moment(result.start.get('month')) < 1 || + moment(result.start.get('day')) > 31 || moment(result.start.get('day')) < 1) { + return null; + } + + result.tags['ENDateFormatParser'] = true; + return result; + }; +} |