| Index: third_party/WebKit/Source/devtools/front_end/formatter_worker/JavaScriptOutline.js
|
| diff --git a/third_party/WebKit/Source/devtools/front_end/formatter_worker/JavaScriptOutline.js b/third_party/WebKit/Source/devtools/front_end/formatter_worker/JavaScriptOutline.js
|
| index c9a9347ab22cd6e70ff46dfa672a3efbf7cd84a4..a11b0fa2bd5be7c43a5590d8dd6137b966c100fa 100644
|
| --- a/third_party/WebKit/Source/devtools/front_end/formatter_worker/JavaScriptOutline.js
|
| +++ b/third_party/WebKit/Source/devtools/front_end/formatter_worker/JavaScriptOutline.js
|
| @@ -1,86 +1,81 @@
|
| // Copyright 2016 The Chromium Authors. All rights reserved.
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
| -
|
| /**
|
| * @param {string} content
|
| */
|
| -WebInspector.javaScriptOutline = function(content)
|
| -{
|
| - var chunkSize = 100000; // characters per data chunk
|
| - var outlineChunk = [];
|
| - var previousIdentifier = null;
|
| - var previousToken = null;
|
| - var processedChunkCharacters = 0;
|
| - var addedFunction = false;
|
| - var isReadingArguments = false;
|
| - var argumentsText = "";
|
| - var currentFunction = null;
|
| - var tokenizer = new WebInspector.AcornTokenizer(content);
|
| - var AT = WebInspector.AcornTokenizer;
|
| +WebInspector.javaScriptOutline = function(content) {
|
| + var chunkSize = 100000; // characters per data chunk
|
| + var outlineChunk = [];
|
| + var previousIdentifier = null;
|
| + var previousToken = null;
|
| + var processedChunkCharacters = 0;
|
| + var addedFunction = false;
|
| + var isReadingArguments = false;
|
| + var argumentsText = '';
|
| + var currentFunction = null;
|
| + var tokenizer = new WebInspector.AcornTokenizer(content);
|
| + var AT = WebInspector.AcornTokenizer;
|
|
|
| - while (tokenizer.peekToken()) {
|
| - var token = /** @type {!Acorn.TokenOrComment} */(tokenizer.nextToken());
|
| - if (AT.lineComment(token) || AT.blockComment(token))
|
| - continue;
|
| + while (tokenizer.peekToken()) {
|
| + var token = /** @type {!Acorn.TokenOrComment} */ (tokenizer.nextToken());
|
| + if (AT.lineComment(token) || AT.blockComment(token))
|
| + continue;
|
|
|
| - var tokenValue = content.substring(token.start, token.end);
|
| + var tokenValue = content.substring(token.start, token.end);
|
|
|
| - if (AT.identifier(token) && previousToken && (AT.identifier(previousToken, "get") || AT.identifier(previousToken, "set"))) {
|
| - currentFunction = {
|
| - line: tokenizer.tokenLineStart(),
|
| - column: tokenizer.tokenColumnStart(),
|
| - name : previousToken.value + " " + tokenValue
|
| - };
|
| - addedFunction = true;
|
| - previousIdentifier = null;
|
| - } else if (AT.identifier(token)) {
|
| - previousIdentifier = tokenValue;
|
| - if (tokenValue && previousToken && AT.keyword(previousToken, "function")) {
|
| - // A named function: "function f...".
|
| - currentFunction = {
|
| - line: tokenizer.tokenLineStart(),
|
| - column: tokenizer.tokenColumnStart(),
|
| - name: tokenValue
|
| - };
|
| - addedFunction = true;
|
| - previousIdentifier = null;
|
| - }
|
| - } else if (AT.keyword(token, "function") && previousIdentifier && previousToken && AT.punctuator(previousToken, ":=")) {
|
| - // Anonymous function assigned to an identifier: "...f = function..."
|
| - // or "funcName: function...".
|
| - currentFunction = {
|
| - line: tokenizer.tokenLineStart(),
|
| - column: tokenizer.tokenColumnStart(),
|
| - name: previousIdentifier
|
| - };
|
| - addedFunction = true;
|
| - previousIdentifier = null;
|
| - } else if (AT.punctuator(token, ".") && previousToken && AT.identifier(previousToken))
|
| - previousIdentifier += ".";
|
| - else if (AT.punctuator(token, "(") && addedFunction)
|
| - isReadingArguments = true;
|
| - if (isReadingArguments && tokenValue)
|
| - argumentsText += tokenValue;
|
| + if (AT.identifier(token) && previousToken &&
|
| + (AT.identifier(previousToken, 'get') || AT.identifier(previousToken, 'set'))) {
|
| + currentFunction = {
|
| + line: tokenizer.tokenLineStart(),
|
| + column: tokenizer.tokenColumnStart(),
|
| + name: previousToken.value + ' ' + tokenValue
|
| + };
|
| + addedFunction = true;
|
| + previousIdentifier = null;
|
| + } else if (AT.identifier(token)) {
|
| + previousIdentifier = tokenValue;
|
| + if (tokenValue && previousToken && AT.keyword(previousToken, 'function')) {
|
| + // A named function: "function f...".
|
| + currentFunction = {line: tokenizer.tokenLineStart(), column: tokenizer.tokenColumnStart(), name: tokenValue};
|
| + addedFunction = true;
|
| + previousIdentifier = null;
|
| + }
|
| + } else if (
|
| + AT.keyword(token, 'function') && previousIdentifier && previousToken && AT.punctuator(previousToken, ':=')) {
|
| + // Anonymous function assigned to an identifier: "...f = function..."
|
| + // or "funcName: function...".
|
| + currentFunction = {
|
| + line: tokenizer.tokenLineStart(),
|
| + column: tokenizer.tokenColumnStart(),
|
| + name: previousIdentifier
|
| + };
|
| + addedFunction = true;
|
| + previousIdentifier = null;
|
| + } else if (AT.punctuator(token, '.') && previousToken && AT.identifier(previousToken))
|
| + previousIdentifier += '.';
|
| + else if (AT.punctuator(token, '(') && addedFunction)
|
| + isReadingArguments = true;
|
| + if (isReadingArguments && tokenValue)
|
| + argumentsText += tokenValue;
|
|
|
| - if (AT.punctuator(token, ")") && isReadingArguments) {
|
| - addedFunction = false;
|
| - isReadingArguments = false;
|
| - currentFunction.arguments = argumentsText.replace(/,[\r\n\s]*/g, ", ").replace(/([^,])[\r\n\s]+/g, "$1");
|
| - argumentsText = "";
|
| - outlineChunk.push(currentFunction);
|
| - }
|
| + if (AT.punctuator(token, ')') && isReadingArguments) {
|
| + addedFunction = false;
|
| + isReadingArguments = false;
|
| + currentFunction.arguments = argumentsText.replace(/,[\r\n\s]*/g, ', ').replace(/([^,])[\r\n\s]+/g, '$1');
|
| + argumentsText = '';
|
| + outlineChunk.push(currentFunction);
|
| + }
|
|
|
| - previousToken = token;
|
| - processedChunkCharacters += token.end - token.start;
|
| + previousToken = token;
|
| + processedChunkCharacters += token.end - token.start;
|
|
|
| - if (processedChunkCharacters >= chunkSize) {
|
| - postMessage({ chunk: outlineChunk, isLastChunk: false });
|
| - outlineChunk = [];
|
| - processedChunkCharacters = 0;
|
| - }
|
| + if (processedChunkCharacters >= chunkSize) {
|
| + postMessage({chunk: outlineChunk, isLastChunk: false});
|
| + outlineChunk = [];
|
| + processedChunkCharacters = 0;
|
| }
|
| + }
|
|
|
| - postMessage({ chunk: outlineChunk, isLastChunk: true });
|
| + postMessage({chunk: outlineChunk, isLastChunk: true});
|
| };
|
| -
|
|
|