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 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
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 Loading... |
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 } |
OLD | NEW |