diff options
Diffstat (limited to 'bin/wiki/ImportarDesdeURL/node_modules/chrono-node/src/refiners/ExtractTimezoneOffsetRefiner.js')
-rw-r--r-- | bin/wiki/ImportarDesdeURL/node_modules/chrono-node/src/refiners/ExtractTimezoneOffsetRefiner.js | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/bin/wiki/ImportarDesdeURL/node_modules/chrono-node/src/refiners/ExtractTimezoneOffsetRefiner.js b/bin/wiki/ImportarDesdeURL/node_modules/chrono-node/src/refiners/ExtractTimezoneOffsetRefiner.js new file mode 100644 index 00000000..15d7f614 --- /dev/null +++ b/bin/wiki/ImportarDesdeURL/node_modules/chrono-node/src/refiners/ExtractTimezoneOffsetRefiner.js @@ -0,0 +1,46 @@ +/* + +*/ +var Refiner = require('./refiner').Refiner; + + +var TIMEZONE_OFFSET_PATTERN = new RegExp("^\\s*(GMT|UTC)?(\\+|\\-)(\\d{1,2}):?(\\d{2})", 'i'); +var TIMEZONE_OFFSET_SIGN_GROUP = 2; +var TIMEZONE_OFFSET_HOUR_OFFSET_GROUP = 3; +var TIMEZONE_OFFSET_MINUTE_OFFSET_GROUP = 4; + +exports.Refiner = function ExtractTimezoneOffsetRefiner() { + Refiner.call(this); + + this.refine = function(text, results, opt) { + + results.forEach(function(result) { + + if (result.start.isCertain('timezoneOffset')) { + return; + } + + var match = TIMEZONE_OFFSET_PATTERN.exec(text.substring(result.index + result.text.length)); + if (!match) { + return; + } + + var hourOffset = parseInt(match[TIMEZONE_OFFSET_HOUR_OFFSET_GROUP]); + var minuteOffset = parseInt(match[TIMEZONE_OFFSET_MINUTE_OFFSET_GROUP]); + var timezoneOffset = hourOffset * 60 + minuteOffset; + if (match[TIMEZONE_OFFSET_SIGN_GROUP] === '-') { + timezoneOffset = -timezoneOffset; + } + + if (result.end != null) { + result.end.assign('timezoneOffset', timezoneOffset); + } + + result.start.assign('timezoneOffset', timezoneOffset); + result.text += match[0]; + result.tags['ExtractTimezoneOffsetRefiner'] = true; + }); + + return results; + } +} |