| OLD | NEW |
| 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 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 91 | 91 |
| 92 /** | 92 /** |
| 93 * @param {string} string | 93 * @param {string} string |
| 94 * @param {function(string,string,number=,number=):!Node} linkifier | 94 * @param {function(string,string,number=,number=):!Node} linkifier |
| 95 * @return {!DocumentFragment} | 95 * @return {!DocumentFragment} |
| 96 */ | 96 */ |
| 97 WebInspector.linkifyStringAsFragmentWithCustomLinkifier = function(string, linki
fier) | 97 WebInspector.linkifyStringAsFragmentWithCustomLinkifier = function(string, linki
fier) |
| 98 { | 98 { |
| 99 var container = createDocumentFragment(); | 99 var container = createDocumentFragment(); |
| 100 var linkStringRegEx = /(?:[a-zA-Z][a-zA-Z0-9+.-]{2,}:\/\/|data:|www\.)[\w$\-
_+*'=\|\/\\(){}[\]^%@&#~,:;.!?]{2,}[\w$\-_+*=\|\/\\({^%@&#~]/; | 100 var linkStringRegEx = /(?:[a-zA-Z][a-zA-Z0-9+.-]{2,}:\/\/|data:|www\.)[\w$\-
_+*'=\|\/\\(){}[\]^%@&#~,:;.!?]{2,}[\w$\-_+*=\|\/\\({^%@&#~]/; |
| 101 var lineColumnRegEx = /:(\d+)(:(\d+))?$/; | |
| 102 | 101 |
| 103 while (string) { | 102 while (string) { |
| 104 var linkString = linkStringRegEx.exec(string); | 103 var linkString = linkStringRegEx.exec(string); |
| 105 if (!linkString) | 104 if (!linkString) |
| 106 break; | 105 break; |
| 107 | 106 |
| 108 linkString = linkString[0]; | 107 linkString = linkString[0]; |
| 109 var linkIndex = string.indexOf(linkString); | 108 var linkIndex = string.indexOf(linkString); |
| 110 var nonLink = string.substring(0, linkIndex); | 109 var nonLink = string.substring(0, linkIndex); |
| 111 container.appendChild(createTextNode(nonLink)); | 110 container.appendChild(createTextNode(nonLink)); |
| 112 | 111 |
| 113 var title = linkString; | 112 var title = linkString; |
| 114 var realURL = (linkString.startsWith("www.") ? "http://" + linkString :
linkString); | 113 var realURL = (linkString.startsWith("www.") ? "http://" + linkString :
linkString); |
| 115 var lineColumnMatch = lineColumnRegEx.exec(realURL); | 114 var parsedURL = new WebInspector.ParsedURL(realURL); |
| 116 var lineNumber; | 115 var splitResult = WebInspector.ParsedURL.splitLineAndColumn(parsedURL.la
stPathComponent); |
| 117 var columnNumber; | 116 var linkNode; |
| 118 if (lineColumnMatch) { | 117 if (splitResult) { |
| 119 realURL = realURL.substring(0, realURL.length - lineColumnMatch[0].l
ength); | 118 var link = realURL.substring(0, realURL.length - parsedURL.lastPathC
omponent.length + splitResult.url.length); |
| 120 lineNumber = parseInt(lineColumnMatch[1], 10); | 119 linkNode = linkifier(title, link, splitResult.lineNumber, splitResul
t.columnNumber); |
| 121 // Immediately convert line and column to 0-based numbers. | 120 } else |
| 122 lineNumber = isNaN(lineNumber) ? undefined : lineNumber - 1; | 121 linkNode = linkifier(title, realURL); |
| 123 if (typeof(lineColumnMatch[3]) === "string") { | |
| 124 columnNumber = parseInt(lineColumnMatch[3], 10); | |
| 125 columnNumber = isNaN(columnNumber) ? undefined : columnNumber -
1; | |
| 126 } | |
| 127 } | |
| 128 | 122 |
| 129 var linkNode = linkifier(title, realURL, lineNumber, columnNumber); | |
| 130 container.appendChild(linkNode); | 123 container.appendChild(linkNode); |
| 131 string = string.substring(linkIndex + linkString.length, string.length); | 124 string = string.substring(linkIndex + linkString.length, string.length); |
| 132 } | 125 } |
| 133 | 126 |
| 134 if (string) | 127 if (string) |
| 135 container.appendChild(createTextNode(string)); | 128 container.appendChild(createTextNode(string)); |
| 136 | 129 |
| 137 return container; | 130 return container; |
| 138 } | 131 } |
| 139 | 132 |
| (...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 228 /** | 221 /** |
| 229 * @param {!WebInspector.NetworkRequest} request | 222 * @param {!WebInspector.NetworkRequest} request |
| 230 * @return {!Element} | 223 * @return {!Element} |
| 231 */ | 224 */ |
| 232 WebInspector.linkifyRequestAsNode = function(request) | 225 WebInspector.linkifyRequestAsNode = function(request) |
| 233 { | 226 { |
| 234 var anchor = WebInspector.linkifyURLAsNode(request.url); | 227 var anchor = WebInspector.linkifyURLAsNode(request.url); |
| 235 anchor.requestId = request.requestId; | 228 anchor.requestId = request.requestId; |
| 236 return anchor; | 229 return anchor; |
| 237 } | 230 } |
| OLD | NEW |