aboutsummaryrefslogtreecommitdiff
path: root/node_modules/handlebars/lib/handlebars/exception.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/handlebars/lib/handlebars/exception.js')
-rw-r--r--node_modules/handlebars/lib/handlebars/exception.js46
1 files changed, 46 insertions, 0 deletions
diff --git a/node_modules/handlebars/lib/handlebars/exception.js b/node_modules/handlebars/lib/handlebars/exception.js
new file mode 100644
index 000000000..08ae531aa
--- /dev/null
+++ b/node_modules/handlebars/lib/handlebars/exception.js
@@ -0,0 +1,46 @@
+
+const errorProps = ['description', 'fileName', 'lineNumber', 'message', 'name', 'number', 'stack'];
+
+function Exception(message, node) {
+ let loc = node && node.loc,
+ line,
+ column;
+ if (loc) {
+ line = loc.start.line;
+ column = loc.start.column;
+
+ message += ' - ' + line + ':' + column;
+ }
+
+ let tmp = Error.prototype.constructor.call(this, message);
+
+ // Unfortunately errors are not enumerable in Chrome (at least), so `for prop in tmp` doesn't work.
+ for (let idx = 0; idx < errorProps.length; idx++) {
+ this[errorProps[idx]] = tmp[errorProps[idx]];
+ }
+
+ /* istanbul ignore else */
+ if (Error.captureStackTrace) {
+ Error.captureStackTrace(this, Exception);
+ }
+
+ try {
+ if (loc) {
+ this.lineNumber = line;
+
+ // Work around issue under safari where we can't directly set the column value
+ /* istanbul ignore next */
+ if (Object.defineProperty) {
+ Object.defineProperty(this, 'column', {value: column});
+ } else {
+ this.column = column;
+ }
+ }
+ } catch (nop) {
+ /* Ignore if the browser is very particular */
+ }
+}
+
+Exception.prototype = new Error();
+
+export default Exception;