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

Side by Side Diff: Source/devtools/front_end/bindings/ResourceUtils.js

Issue 674513002: DevTools: linkify relative links in console.log(new Error().stack) (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Address vsevik's comments Created 6 years, 1 month 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2006, 2007, 2008 Apple Inc. All rights reserved. 2 * Copyright (C) 2006, 2007, 2008 Apple Inc. All rights reserved.
3 * Copyright (C) 2007 Matt Lilek (pewtermoose@gmail.com). 3 * Copyright (C) 2007 Matt Lilek (pewtermoose@gmail.com).
4 * Copyright (C) 2009 Joseph Pecoraro 4 * Copyright (C) 2009 Joseph Pecoraro
5 * 5 *
6 * Redistribution and use in source and binary forms, with or without 6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions 7 * modification, are permitted provided that the following conditions
8 * are met: 8 * are met:
9 * 9 *
10 * 1. Redistributions of source code must retain the above copyright 10 * 1. Redistributions of source code must retain the above copyright
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
92 92
93 /** 93 /**
94 * @param {string} string 94 * @param {string} string
95 * @param {function(string,string,number=,number=):!Node} linkifier 95 * @param {function(string,string,number=,number=):!Node} linkifier
96 * @return {!DocumentFragment} 96 * @return {!DocumentFragment}
97 */ 97 */
98 WebInspector.linkifyStringAsFragmentWithCustomLinkifier = function(string, linki fier) 98 WebInspector.linkifyStringAsFragmentWithCustomLinkifier = function(string, linki fier)
99 { 99 {
100 var container = createDocumentFragment(); 100 var container = createDocumentFragment();
101 var linkStringRegEx = /(?:[a-zA-Z][a-zA-Z0-9+.-]{2,}:\/\/|data:|www\.)[\w$\- _+*'=\|\/\\(){}[\]^%@&#~,:;.!?]{2,}[\w$\-_+*=\|\/\\({^%@&#~]/; 101 var linkStringRegEx = /(?:[a-zA-Z][a-zA-Z0-9+.-]{2,}:\/\/|data:|www\.)[\w$\- _+*'=\|\/\\(){}[\]^%@&#~,:;.!?]{2,}[\w$\-_+*=\|\/\\({^%@&#~]/;
102 var lineColumnRegEx = /:(\d+)(:(\d+))?$/;
103 102
104 while (string) { 103 while (string) {
105 var linkString = linkStringRegEx.exec(string); 104 var linkString = linkStringRegEx.exec(string);
106 if (!linkString) 105 if (!linkString)
107 break; 106 break;
108 107
109 linkString = linkString[0]; 108 linkString = linkString[0];
110 var linkIndex = string.indexOf(linkString); 109 var linkIndex = string.indexOf(linkString);
111 var nonLink = string.substring(0, linkIndex); 110 var nonLink = string.substring(0, linkIndex);
112 container.appendChild(createTextNode(nonLink)); 111 container.appendChild(createTextNode(nonLink));
113 112
114 var title = linkString; 113 var title = linkString;
115 var realURL = (linkString.startsWith("www.") ? "http://" + linkString : linkString); 114 var realURL = (linkString.startsWith("www.") ? "http://" + linkString : linkString);
116 var parsedURL = new WebInspector.ParsedURL(realURL); 115 var parsedURL = new WebInspector.ParsedURL(realURL);
117 var lineColumnMatch = lineColumnRegEx.exec(parsedURL.lastPathComponent); 116 var splitResult = WebInspector.ParsedURL.splitLineAndColumn(parsedURL.la stPathComponent);
118 var lineNumber; 117 var linkNode;
119 var columnNumber; 118 if (splitResult) {
120 if (lineColumnMatch) { 119 var link = realURL.substring(0, realURL.length - parsedURL.lastPathC omponent.length + splitResult.url.length);
121 realURL = realURL.substring(0, realURL.length - lineColumnMatch[0].l ength); 120 linkNode = linkifier(title, splitResult.url, splitResult.lineNumber, splitResult.columnNumber);
122 lineNumber = parseInt(lineColumnMatch[1], 10); 121 } else
123 // Immediately convert line and column to 0-based numbers. 122 linkNode = linkifier(title, realURL);
124 lineNumber = isNaN(lineNumber) ? undefined : lineNumber - 1;
125 if (typeof(lineColumnMatch[3]) === "string") {
126 columnNumber = parseInt(lineColumnMatch[3], 10);
127 columnNumber = isNaN(columnNumber) ? undefined : columnNumber - 1;
128 }
129 }
130 123
131 var linkNode = linkifier(title, realURL, lineNumber, columnNumber);
132 container.appendChild(linkNode); 124 container.appendChild(linkNode);
133 string = string.substring(linkIndex + linkString.length, string.length); 125 string = string.substring(linkIndex + linkString.length, string.length);
134 } 126 }
135 127
136 if (string) 128 if (string)
137 container.appendChild(createTextNode(string)); 129 container.appendChild(createTextNode(string));
138 130
139 return container; 131 return container;
140 } 132 }
141 133
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
207 /** 199 /**
208 * @param {!WebInspector.NetworkRequest} request 200 * @param {!WebInspector.NetworkRequest} request
209 * @return {!Element} 201 * @return {!Element}
210 */ 202 */
211 WebInspector.linkifyRequestAsNode = function(request) 203 WebInspector.linkifyRequestAsNode = function(request)
212 { 204 {
213 var anchor = WebInspector.linkifyURLAsNode(request.url); 205 var anchor = WebInspector.linkifyURLAsNode(request.url);
214 anchor.requestId = request.requestId; 206 anchor.requestId = request.requestId;
215 return anchor; 207 return anchor;
216 } 208 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698