马宇豪
2024-07-16 f591c27b57e2418c9495bc02ae8cfff84d35bc18
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
// 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;