| // YAML error class. http://stackoverflow.com/questions/8458984 | |
| // | |
| 'use strict'; | |
| 
 | |
| 
 | |
| function formatError(exception, compact) { | |
|   var where = '', message = exception.reason || '(unknown reason)'; | |
| 
 | |
|   if (!exception.mark) return message; | |
| 
 | |
|   if (exception.mark.name) { | |
|     where += 'in "' + exception.mark.name + '" '; | |
|   } | |
| 
 | |
|   where += '(' + (exception.mark.line + 1) + ':' + (exception.mark.column + 1) + ')'; | |
| 
 | |
|   if (!compact && exception.mark.snippet) { | |
|     where += '\n\n' + exception.mark.snippet; | |
|   } | |
| 
 | |
|   return message + ' ' + where; | |
| } | |
| 
 | |
| 
 | |
| function YAMLException(reason, mark) { | |
|   // Super constructor | |
|   Error.call(this); | |
| 
 | |
|   this.name = 'YAMLException'; | |
|   this.reason = reason; | |
|   this.mark = mark; | |
|   this.message = formatError(this, false); | |
| 
 | |
|   // Include stack trace in error object | |
|   if (Error.captureStackTrace) { | |
|     // Chrome and NodeJS | |
|     Error.captureStackTrace(this, this.constructor); | |
|   } else { | |
|     // FF, IE 10+ and Safari 6+. Fallback for others | |
|     this.stack = (new Error()).stack || ''; | |
|   } | |
| } | |
| 
 | |
| 
 | |
| // Inherit from Error | |
| YAMLException.prototype = Object.create(Error.prototype); | |
| YAMLException.prototype.constructor = YAMLException; | |
| 
 | |
| 
 | |
| YAMLException.prototype.toString = function toString(compact) { | |
|   return this.name + ': ' + formatError(this, compact); | |
| }; | |
| 
 | |
| 
 | |
| module.exports = YAMLException;
 |