Changeset 35616

Show
Ignore:
Timestamp:
08/06/08 16:07:27 (4 months ago)
Author:
kmccullough@apple.com
Message:

2008-08-06 Kevin McCullough <kmccullough@apple.com>

Reviewed by Tim.

  • Created a new function to create DOM links from text without converting back and forth from HTML and messing with escaping special characters.
  • page/inspector/Console.js:
  • page/inspector/inspector.js:
  • page/inspector/utilities.js:
Location:
trunk/WebCore
Files:
4 modified

Legend:

Unmodified
Added
Removed
  • trunk/WebCore/ChangeLog

    r35615 r35616  
     12008-08-06  Kevin McCullough  <kmccullough@apple.com> 
     2 
     3        Reviewed by Tim. 
     4 
     5        - Created a new function to create DOM links from text without 
     6        converting back and forth from HTML and messing with escaping special 
     7        characters. 
     8 
     9        * page/inspector/Console.js: 
     10        * page/inspector/inspector.js: 
     11        * page/inspector/utilities.js: 
     12 
    1132008-08-06  Eric Seidel  <eric@webkit.org> 
    214 
  • trunk/WebCore/page/inspector/Console.js

    r35607 r35616  
    407407        if (plainText) 
    408408            elem.appendChild(document.createTextNode("\"" + str + "\"")); 
    409         else 
    410             elem.insertAdjacentHTML("beforeEnd", "\"" + WebInspector.linkifyString(str) + "\""); 
     409        else { 
     410            elem.appendChild(document.createTextNode("\"")); 
     411            elem.appendChild(WebInspector.linkifyStringAsFragment(str)); 
     412            elem.appendChild(document.createTextNode("\"")); 
     413        } 
    411414    }, 
    412415 
     
    516519            { 
    517520                if (!(b instanceof Node)) 
    518                     a.insertAdjacentHTML("beforeEnd", WebInspector.linkifyString(b.toString())); 
     521                    a.appendChild(WebInspector.linkifyStringAsFragment(b.toString())); 
    519522                else 
    520523                    a.appendChild(b); 
     
    531534        for (var i = 0; i < parameters.length; ++i) { 
    532535            if (typeof parameters[i] === "string") 
    533                 formattedResult.insertAdjacentHTML("beforeEnd", WebInspector.linkifyString(parameters[i])); 
     536                formattedResult.appendChild(WebInspector.linkifyStringAsFragment(parameters[i])); 
    534537            else 
    535538                formattedResult.appendChild(formatForConsole(parameters[i])); 
  • trunk/WebCore/page/inspector/inspector.js

    r35607 r35616  
    916916} 
    917917 
    918 WebInspector.linkifyString = function(string) 
    919 { 
    920     function linkify(url) 
    921     { 
    922         url = url.unescapeHTML(); 
    923         var realURL = (url.indexOf("www.") === 0 ? "http://" + url : url); 
    924         return WebInspector.linkifyURL(realURL, url, null, (realURL in WebInspector.resourceURLMap)); 
    925     } 
    926  
    927     string = string.escapeHTML(); 
    928     return string.replace(new RegExp("(?:[a-zA-Z][a-zA-Z0-9+.-]{2,}://|www\\.)[\\w$\\-_+*'=\\|/\\\\(){}[\\]%@&#~,:;.!?]{4,}[\\w$\\-_+*=\\|/\\\\({%@&#~]"), linkify); 
     918WebInspector.linkifyStringAsFragment = function(string) 
     919{ 
     920    var container = document.createDocumentFragment(); 
     921    var linkStringRegEx = new RegExp("(?:[a-zA-Z][a-zA-Z0-9+.-]{2,}://|www\\.)[\\w$\\-_+*'=\\|/\\\\(){}[\\]%@&#~,:;.!?]{4,}[\\w$\\-_+*=\\|/\\\\({%@&#~]"); 
     922 
     923    while (string) { 
     924        var linkString = linkStringRegEx.exec(string); 
     925        if (!linkString) 
     926            break; 
     927 
     928        linkString = linkString[0]; 
     929        var linkIndex = string.indexOf(linkString); 
     930        var nonLink = string.substring(0, linkIndex); 
     931        container.appendChild(document.createTextNode(nonLink)); 
     932        var realURL = (linkString.indexOf("www.") === 0 ? "http://" + linkString : linkString); 
     933        container.appendChild(WebInspector.linkifyURLAsNode(realURL, linkString, null, (realURL in WebInspector.resourceURLMap))); 
     934        string = string.substring(linkIndex + linkString.length, string.length); 
     935    } 
     936 
     937    if (string) 
     938        container.appendChild(document.createTextNode(string)); 
     939     
     940    return container; 
     941} 
     942 
     943WebInspector.linkifyURLAsNode = function(url, linkText, classes, isExternal) 
     944{ 
     945    if (!linkText) 
     946        linkText = url; 
     947    classes = (classes ? classes + " " : ""); 
     948    classes += isExternal ? "webkit-html-external-link" : "webkit-html-resource-link"; 
     949 
     950    var a = document.createElement("a"); 
     951    a.href = url; 
     952    a.className = classes; 
     953    a.title = url; 
     954    a.target = "_blank"; 
     955    a.textContent = linkText; 
     956     
     957    return a; 
    929958} 
    930959 
  • trunk/WebCore/page/inspector/utilities.js

    r35607 r35616  
    349349{ 
    350350    return this.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;"); 
    351 } 
    352  
    353 String.prototype.unescapeHTML = function() 
    354 { 
    355     return this.replace(/&lt;/g, "<").replace(/&gt;/g, ">").replace(/&amp;/g, "&"); 
    356351} 
    357352