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

Unified Diff: third_party/WebKit/Source/devtools/front_end/components/Linkifier.js

Issue 2568983003: Add ability to linkify substituted string
Patch Set: Created 4 years 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: 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 4926fac9712de8b707479812097b27abdee2146e..6a41efe8a9fb587df05ddc4a78de9c36b2379845 100644
--- a/third_party/WebKit/Source/devtools/front_end/components/Linkifier.js
+++ b/third_party/WebKit/Source/devtools/front_end/components/Linkifier.js
@@ -593,16 +593,65 @@ Components.LinkDecorator.Events = {
/**
* @param {string} string
* @param {function(string,string,number=,number=):!Node} linkifier
- * @return {!DocumentFragment}
+ * @return {?Node}
*/
-Components.linkifyStringAsFragmentWithCustomLinkifier = function(string, linkifier) {
- var container = createDocumentFragment();
+Components.Linkifier.getLinkNodeWithCustomLinkifier = function(string, linkifier) {
+ var linkString = Components.Linkifier.getLinkString(string);
+ if (!linkString || linkString[0] !== string)
+ return null;
+
+ var title = string;
+ var realURL = (string.startsWith('www.') ? 'http://' + string : string);
+ var splitResult = Common.ParsedURL.splitLineAndColumn(realURL);
+ var linkNode;
+ if (splitResult)
+ linkNode = linkifier(title, splitResult.url, splitResult.lineNumber, splitResult.columnNumber);
+ else
+ linkNode = linkifier(title, realURL);
+
+ return linkNode;
+};
+
+/**
+ * @param {string} string
+ * @return {?Node}
+ */
+Components.Linkifier.getLinkNode = function(string) {
+ /**
+ * @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.getLinkNodeWithCustomLinkifier(string, linkifier);
+};
+
+/**
+ * @param {string} string
+ * @return {?Array|{index:number, input:string}}
luoe 2016/12/13 00:08:27 This annotation looks like an Array OR an Object,
+ */
+Components.Linkifier.getLinkString = function(string) {
var linkStringRegEx =
/(?:[a-zA-Z][a-zA-Z0-9+.-]{2,}:\/\/|data:|www\.)[\w$\-_+*'=\|\/\\(){}[\]^%@&#~,:;.!?]{2,}[\w$\-_+*=\|\/\\({^%@&#~]/;
var pathLineRegex = /(?:\/[\w\.-]*)+\:[\d]+/;
+ return linkStringRegEx.exec(string) || pathLineRegex.exec(string);
+};
+
+/**
+ * @param {string} string
+ * @param {function(string,string,number=,number=):!Node} linkifier
+ * @return {!DocumentFragment}
+ */
+Components.linkifyStringAsFragmentWithCustomLinkifier = function(string, linkifier) {
+ var container = createDocumentFragment();
while (string && string.length < Components.Linkifier.MaxLengthToIgnoreLinkifier) {
- var linkString = linkStringRegEx.exec(string) || pathLineRegex.exec(string);
+ var linkString = Components.Linkifier.getLinkString(string);
if (!linkString)
break;
@@ -611,14 +660,7 @@ Components.linkifyStringAsFragmentWithCustomLinkifier = function(string, linkifi
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.getLinkNodeWithCustomLinkifier(linkString, linkifier);
container.appendChild(linkNode);
string = string.substring(linkIndex + linkString.length, string.length);

Powered by Google App Engine
This is Rietveld 408576698