Changeset 17619 in webkit


Ignore:
Timestamp:
Nov 6, 2006 9:08:16 AM (17 years ago)
Author:
thatcher
Message:

Reviewed by Maciej.

Bug 11525: [Drosera] function menu doesn't understand object.method = function() {} syntax
http://bugs.webkit.org/show_bug.cgi?id=11525

  • Drosera/debugger.js: imporved the function name code
Location:
trunk/WebKitTools
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/WebKitTools/ChangeLog

    r17617 r17619  
     12006-11-05  Timothy Hatcher  <timothy@apple.com>
     2
     3        Reviewed by Maciej.
     4
     5        Bug 11525: [Drosera] function menu doesn't understand object.method = function() {} syntax
     6        http://bugs.webkit.org/show_bug.cgi?id=11525
     7
     8        * Drosera/debugger.js: imporved the function name code
     9
    1102006-11-06  Alexey Proskuryakov  <ap@webkit.org>
    211
  • trunk/WebKitTools/Drosera/debugger.js

    r17602 r17619  
    801801            if (keywords[keyword]) {
    802802                var functionName = "";
     803                var functionIsAnonymous = false;
    803804                if (keyword == "function") {
    804805                    var functionKeywordOffset = 8;
    805                     var functionNameChar = "";
    806                    
    807                     if (code.charAt(i + functionKeywordOffset) == " ") {
    808                         functionNameChar = code.charAt(i + functionKeywordOffset + 1);
    809                         functionKeywordOffset++;
    810                     } else
    811                         functionNameChar = code.charAt(i + functionKeywordOffset);
    812                    
    813                     if (functionNameChar == "(") {
     806                    for (var j = i + functionKeywordOffset; j < code.length; j++) {
     807                        cj = code.charAt(j);
     808                        if (cj == " ")
     809                            continue;
     810                        if (cj == "(")
     811                            break;
     812                        functionName += cj;
     813                    }
     814
     815                    if (!functionName.length) {
     816                        functionIsAnonymous = true;
     817                        var functionAssignmentFound = false;
     818                        var functionNameStart = -1;
     819                        var functionNameEnd = -1;
     820
     821                        for (var j = i - 1; j >= 0; j--) {
     822                            cj = code.charAt(j);
     823                            if (cj == ":" || cj == "=") {
     824                                functionAssignmentFound = true;
     825                                continue;
     826                            }
     827
     828                            var curCharIsSpace = (cj == " " || cj == "\t" || cj == "\n");
     829                            if (functionAssignmentFound && functionNameEnd == -1 && !curCharIsSpace) {
     830                                functionNameEnd = j + 1;
     831                            } else if (!functionAssignmentFound && !curCharIsSpace) {
     832                                break;
     833                            } else if (functionNameEnd != -1 && curCharIsSpace) {
     834                                functionNameStart = j;
     835                                break;
     836                            }
     837                        }
     838
     839                        if (functionNameStart != -1 && functionNameEnd != -1)
     840                            functionName = code.substring(functionNameStart, functionNameEnd);
     841                    }
     842
     843                    if (!functionName.length)
    814844                        functionName = "function";
    815                         file.functionNames.push(functionName);
    816                     } else {
    817                         while (functionNameChar != "(") {
    818                             functionName += functionNameChar;                       
    819                             functionKeywordOffset++;
    820                             functionNameChar = code.charAt(i + functionKeywordOffset);
    821                             if ((i + functionKeywordOffset) >= code.length || functionNameChar == " " || functionNameChar == "\n") break;
    822                         }
    823                     }
     845
     846                    file.functionNames.push(functionName);
    824847                }
    825848
    826849                var fileIndex = filesLookup[file.url];
    827850
    828                 if (functionName == "function")
     851                if (keyword == "function")
    829852                    result += "<span class=\"keyword\"><a name=\"function-" + fileIndex + "-" + file.functionNames.length + "\" id=\"" + fileIndex + "-" + file.functionNames.length + "\">" + keyword + "</a></span>";
    830853                else
    831854                    result += "<span class=\"keyword\">" + keyword + "</span>";
    832                
    833                 if (functionName.length > 0 && functionName != "function") {
    834                     file.functionNames.push(functionName);
     855
     856                if (functionName.length && !functionIsAnonymous) {
    835857                    result += " <a name=\"function-" + fileIndex + "-" + file.functionNames.length + "\" id=\"" + fileIndex + "-" + file.functionNames.length + "\">" + functionName + "</a>";
    836858                    i += keyword.length + functionName.length;
    837859                } else
    838860                    i += keyword.length - 1;
    839                
     861
    840862                continue;
    841863            }
Note: See TracChangeset for help on using the changeset viewer.