Chromium Code Reviews| Index: third_party/WebKit/Source/devtools/front_end/components/Linkifier.js |
| diff --git a/third_party/WebKit/Source/devtools/front_end/components/Linkifier.js b/third_party/WebKit/Source/devtools/front_end/components/Linkifier.js |
| index 169b6692bb69d9b5c8ac15052cc4888fcc462c5d..1bb9ca30bae90c5f5e4ea9a1c8d61b8c97778b47 100644 |
| --- a/third_party/WebKit/Source/devtools/front_end/components/Linkifier.js |
| +++ b/third_party/WebKit/Source/devtools/front_end/components/Linkifier.js |
| @@ -600,34 +600,89 @@ Components.LinkDecorator.Events = { |
| }; |
| /** |
| + * @param {string} url |
| + * @param {string} text |
| + * @param {function(string,string,number=,number=):!Node} linkifier |
| + * @return {!Node} |
| + */ |
| +Components.Linkifier.createLinkNodeWithCustomLinkifier = function(url, text, linkifier) { |
|
pfeldman
2017/01/27 19:10:07
It looks like this method is doing nothing. Linkif
karabur
2017/01/27 21:21:04
It does not, this method called with three differe
|
| + var realURL = (url.startsWith('www.') ? 'http://' + url : url); |
| + var splitResult = Common.ParsedURL.splitLineAndColumn(realURL); |
| + var linkNode; |
| + if (splitResult) |
| + linkNode = linkifier(text, splitResult.url, splitResult.lineNumber, splitResult.columnNumber); |
| + else |
| + linkNode = linkifier(text, splitResult.url); |
| + |
| + return linkNode; |
| +}; |
| + |
| +/** |
| + * @param {string} url |
| + * @param {string} text |
| + * @return {!Node} |
| + */ |
| +Components.Linkifier.createLinkNode = function(url, text) { |
|
pfeldman
2017/01/27 19:10:07
This method also does not do much.
|
| + /** |
| + * @param {string} title |
| + * @param {string} url |
| + * @param {number=} lineNumber |
| + * @param {number=} columnNumber |
| + * @return {!Node} |
| + */ |
| + function linkifier(title, url, lineNumber, columnNumber) { |
| + return Components.Linkifier.linkifyURL(url, title, undefined, lineNumber, columnNumber); |
| + } |
| + |
| + return Components.Linkifier.createLinkNodeWithCustomLinkifier(url, text, linkifier); |
| +}; |
| + |
| +/** |
| + * @return {!RegExp} |
| + */ |
| +Components.Linkifier.getLinkRegExp = function() { |
|
pfeldman
2017/01/27 19:10:07
Does this need to be public? Start method with _ i
|
| + var linkStringRegEx = |
| + /(?:[a-zA-Z][a-zA-Z0-9+.-]{2,}:\/\/|data:|www\.)[\w$\-_+*'=\|\/\\(){}[\]^%@&#~,:;.!?]{2,}[\w$\-_+*=\|\/\\({^%@&#~]/; |
| + var pathLineRegex = /(?:\/[\w\.-]*)+\:[\d]+/; |
| + |
| + return new RegExp(linkStringRegEx.source + '|' + pathLineRegex, 'g'); |
| +}; |
| + |
| +/** |
| + * @param {string} string |
| + * @return {!Array.<!Common.SourceRange>} |
| + */ |
| +Components.Linkifier.getLinkRanges = function(string) { |
|
pfeldman
2017/01/27 19:10:07
Do we need this public?
|
| + var regExp = Components.Linkifier.getLinkRegExp(); |
| + var match = regExp.exec(string); |
| + var ranges = []; |
| + while (match) { |
| + ranges.push(new Common.SourceRange(match.index, match[0].length)); |
| + match = regExp.exec(string); |
| + } |
| + return ranges; |
| +}; |
| + |
| +/** |
| * @param {string} string |
| * @param {function(string,string,number=,number=):!Node} linkifier |
| * @return {!DocumentFragment} |
| */ |
| Components.linkifyStringAsFragmentWithCustomLinkifier = function(string, linkifier) { |
| var container = createDocumentFragment(); |
| - var linkStringRegEx = |
| - /(?:[a-zA-Z][a-zA-Z0-9+.-]{2,}:\/\/|data:|www\.)[\w$\-_+*'=\|\/\\(){}[\]^%@&#~,:;.!?]{2,}[\w$\-_+*=\|\/\\({^%@&#~]/; |
| - var pathLineRegex = /(?:\/[\w\.-]*)+\:[\d]+/; |
| while (string && string.length < Components.Linkifier.MaxLengthToIgnoreLinkifier) { |
| - var linkString = linkStringRegEx.exec(string) || pathLineRegex.exec(string); |
| - if (!linkString) |
| + var match = Components.Linkifier.getLinkRegExp().exec(string); |
| + |
| + if (!match) |
| break; |
| - linkString = linkString[0]; |
| - var linkIndex = string.indexOf(linkString); |
| + var linkIndex = match.index; |
| + var linkString = match[0]; |
| var nonLink = string.substring(0, linkIndex); |
| container.appendChild(createTextNode(nonLink)); |
| - var title = linkString; |
| - var realURL = (linkString.startsWith('www.') ? 'http://' + linkString : linkString); |
| - var splitResult = Common.ParsedURL.splitLineAndColumn(realURL); |
| - var linkNode; |
| - if (splitResult) |
| - linkNode = linkifier(title, splitResult.url, splitResult.lineNumber, splitResult.columnNumber); |
| - else |
| - linkNode = linkifier(title, realURL); |
| + var linkNode = Components.Linkifier.createLinkNodeWithCustomLinkifier(linkString, linkString, linkifier); |
| container.appendChild(linkNode); |
| string = string.substring(linkIndex + linkString.length, string.length); |