diff options
Diffstat (limited to 'bin/wiki/ImportarDesdeURL/node_modules/chrono-node/src/result.js')
-rw-r--r-- | bin/wiki/ImportarDesdeURL/node_modules/chrono-node/src/result.js | 129 |
1 files changed, 129 insertions, 0 deletions
diff --git a/bin/wiki/ImportarDesdeURL/node_modules/chrono-node/src/result.js b/bin/wiki/ImportarDesdeURL/node_modules/chrono-node/src/result.js new file mode 100644 index 00000000..6ee913a3 --- /dev/null +++ b/bin/wiki/ImportarDesdeURL/node_modules/chrono-node/src/result.js @@ -0,0 +1,129 @@ +var moment = require('moment'); + +function ParsedResult(result){ + result = result || {}; + + this.ref = result.ref; + this.index = result.index; + this.text = result.text; + this.tags = result.tags || {}; + + this.start = new ParsedComponents(result.start, result.ref) + if(result.end){ + this.end = new ParsedComponents(result.end, result.ref) + } +} + +ParsedResult.prototype.clone = function() { + var result = new ParsedResult(this); + result.tags = JSON.parse(JSON.stringify(this.tags)); + result.start = this.start.clone(); + if (this.end) { + result.end = this.end.clone(); + } + + return result +} + +ParsedResult.prototype.hasPossibleDates = function() { + return this.start.isPossibleDate() && (!this.end || this.end.isPossibleDate()); +} + + +function ParsedComponents (components, ref){ + + this.knownValues = {}; + this.impliedValues = {}; + + if (components) { + for (key in components) { + this.knownValues[key] = components[key]; + } + } + + if (ref) { + ref = moment(ref); + this.imply('day', ref.date()) + this.imply('month', ref.month() + 1) + this.imply('year', ref.year()) + } + + + this.imply('hour', 12); + this.imply('minute', 0); + this.imply('second', 0); + this.imply('millisecond', 0); +} + +ParsedComponents.prototype.clone = function () { + var component = new ParsedComponents(); + component.knownValues = JSON.parse(JSON.stringify(this.knownValues)); + component.impliedValues = JSON.parse(JSON.stringify(this.impliedValues)); + return component; +}; + +ParsedComponents.prototype.get = function(component, value) { + if (component in this.knownValues) return this.knownValues[component]; + if (component in this.impliedValues) return this.impliedValues[component]; +}; + +ParsedComponents.prototype.assign = function(component, value) { + this.knownValues[component] = value; + delete this.impliedValues[component]; +}; + +ParsedComponents.prototype.imply = function(component, value) { + if (component in this.knownValues) return; + this.impliedValues[component] = value; +}; + +ParsedComponents.prototype.isCertain = function(component) { + return component in this.knownValues; +}; + +ParsedComponents.prototype.isPossibleDate = function() { + var dateMoment = this.moment(); + if (this.isCertain('timezoneOffset')) { + dateMoment.utcOffset(this.get('timezoneOffset')) + } + + if (dateMoment.get('year') != this.get('year')) return false; + if (dateMoment.get('month') != this.get('month')-1) return false; + if (dateMoment.get('date') != this.get('day')) return false; + if (dateMoment.get('hour') != this.get('hour')) return false; + if (dateMoment.get('minute') != this.get('minute')) return false; + + return true; +}; + +ParsedComponents.prototype.date = function() { + var dateMoment = this.moment(); + return dateMoment.toDate(); +}; + +ParsedComponents.prototype.moment = function() { + var dateMoment = moment(); + + dateMoment.set('year', this.get('year')); + dateMoment.set('month', this.get('month')-1); + dateMoment.set('date', this.get('day')); + dateMoment.set('hour', this.get('hour')); + dateMoment.set('minute', this.get('minute')); + dateMoment.set('second', this.get('second')); + dateMoment.set('millisecond', this.get('millisecond')); + + // Javascript Date Object return minus timezone offset + var currentTimezoneOffset = dateMoment.utcOffset(); + var targetTimezoneOffset = this.get('timezoneOffset') !== undefined ? + this.get('timezoneOffset') : currentTimezoneOffset; + + var adjustTimezoneOffset = targetTimezoneOffset - currentTimezoneOffset; + dateMoment.add(-adjustTimezoneOffset, 'minutes'); + + return dateMoment; +}; + + + +exports.ParsedComponents = ParsedComponents; +exports.ParsedResult = ParsedResult; |