Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2119)

Unified Diff: appengine/config_service/ui/bower_components/stacky/lib/parsing.js

Issue 2923973003: Added base template for config ui. (Closed)
Patch Set: Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: appengine/config_service/ui/bower_components/stacky/lib/parsing.js
diff --git a/appengine/config_service/ui/bower_components/stacky/lib/parsing.js b/appengine/config_service/ui/bower_components/stacky/lib/parsing.js
new file mode 100644
index 0000000000000000000000000000000000000000..bb2613b6ff36a392f822c914a60f9a70f6a57063
--- /dev/null
+++ b/appengine/config_service/ui/bower_components/stacky/lib/parsing.js
@@ -0,0 +1,95 @@
+/**
+ * @license
+ * Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
+ *
+ * This code may only be used under the BSD style license found at polymer.github.io/LICENSE.txt
+ * The complete set of authors may be found at polymer.github.io/AUTHORS.txt
+ * The complete set of contributors may be found at polymer.github.io/CONTRIBUTORS.txt
+ * Code distributed by Google as part of the polymer project is also subject to
+ * an additional IP rights grant found at polymer.github.io/PATENTS.txt
+ */
+(function(scope) {
+'use strict';
+
+function parse(stack) {
+ var rawLines = stack.split('\n');
+
+ var stackyLines = compact(rawLines.map(parseStackyLine));
+ if (stackyLines.length === rawLines.length) return stackyLines;
+
+ var v8Lines = compact(rawLines.map(parseV8Line));
+ if (v8Lines.length > 0) return v8Lines;
+
+ var geckoLines = compact(rawLines.map(parseGeckoLine));
+ if (geckoLines.length > 0) return geckoLines;
+
+ throw new Error('Unknown stack format: ' + stack);
+}
+
+// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error/Stack
+var GECKO_LINE = /^(?:([^@]*)@)?(.*?):(\d+)(?::(\d+))?$/;
+
+function parseGeckoLine(line) {
+ var match = line.match(GECKO_LINE);
+ if (!match) return null;
+ return {
+ method: match[1] || '',
+ location: match[2] || '',
+ line: parseInt(match[3]) || 0,
+ column: parseInt(match[4]) || 0,
+ };
+}
+
+// https://code.google.com/p/v8/wiki/JavaScriptStackTraceApi
+var V8_OUTER1 = /^\s*(eval )?at (.*) \((.*)\)$/;
+var V8_OUTER2 = /^\s*at()() (\S+)$/;
+var V8_INNER = /^\(?([^\(]+):(\d+):(\d+)\)?$/;
+
+function parseV8Line(line) {
+ var outer = line.match(V8_OUTER1) || line.match(V8_OUTER2);
+ if (!outer) return null;
+ var inner = outer[3].match(V8_INNER);
+ if (!inner) return null;
+
+ var method = outer[2] || '';
+ if (outer[1]) method = 'eval at ' + method;
+ return {
+ method: method,
+ location: inner[1] || '',
+ line: parseInt(inner[2]) || 0,
+ column: parseInt(inner[3]) || 0,
+ };
+}
+
+// Stacky.formatting.pretty
+
+var STACKY_LINE = /^\s*(.+) at (.+):(\d+):(\d+)$/;
+
+function parseStackyLine(line) {
+ var match = line.match(STACKY_LINE);
+ if (!match) return null;
+ return {
+ method: match[1] || '',
+ location: match[2] || '',
+ line: parseInt(match[3]) || 0,
+ column: parseInt(match[4]) || 0,
+ };
+}
+
+// Helpers
+
+function compact(array) {
+ var result = [];
+ array.forEach(function(value) {
+ if (value) {
+ result.push(value);
+ }
+ });
+ return result;
+}
+
+scope.parse = parse;
+scope.parseGeckoLine = parseGeckoLine;
+scope.parseV8Line = parseV8Line;
+scope.parseStackyLine = parseStackyLine;
+})(typeof module !== 'undefined' ? module.exports : (this.Stacky = this.Stacky || {}));

Powered by Google App Engine
This is Rietveld 408576698