| Index: third_party/WebKit/Source/devtools/front_end/script_formatter_worker/JavaScriptFormatter.js
|
| diff --git a/third_party/WebKit/Source/devtools/front_end/script_formatter_worker/JavaScriptFormatter.js b/third_party/WebKit/Source/devtools/front_end/script_formatter_worker/JavaScriptFormatter.js
|
| deleted file mode 100644
|
| index f86c738440ecc018d1934db73c890f28236fee71..0000000000000000000000000000000000000000
|
| --- a/third_party/WebKit/Source/devtools/front_end/script_formatter_worker/JavaScriptFormatter.js
|
| +++ /dev/null
|
| @@ -1,454 +0,0 @@
|
| -/*
|
| - * Copyright (C) 2011 Google Inc. All rights reserved.
|
| - *
|
| - * Redistribution and use in source and binary forms, with or without
|
| - * modification, are permitted provided that the following conditions are
|
| - * met:
|
| - *
|
| - * * Redistributions of source code must retain the above copyright
|
| - * notice, this list of conditions and the following disclaimer.
|
| - * * Redistributions in binary form must reproduce the above
|
| - * copyright notice, this list of conditions and the following disclaimer
|
| - * in the documentation and/or other materials provided with the
|
| - * distribution.
|
| - * * Neither the name of Google Inc. nor the names of its
|
| - * contributors may be used to endorse or promote products derived from
|
| - * this software without specific prior written permission.
|
| - *
|
| - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
| - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
| - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
| - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
| - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
| - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
| - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
| - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
| - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
| - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
| - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
| - */
|
| -
|
| -/**
|
| - * @constructor
|
| - * @param {string} content
|
| - * @param {!FormatterWorker.FormattedContentBuilder} builder
|
| - */
|
| -FormatterWorker.JavaScriptFormatter = function(content, builder)
|
| -{
|
| - this._content = content;
|
| - this._builder = builder;
|
| - this._tokenizer = new WebInspector.AcornTokenizer(this._content);
|
| -}
|
| -
|
| -FormatterWorker.JavaScriptFormatter.prototype = {
|
| - format: function()
|
| - {
|
| - var ast = acorn.parse(this._content, { ranges: false, ecmaVersion: 6 });
|
| - var walker = new WebInspector.ESTreeWalker(this._beforeVisit.bind(this), this._afterVisit.bind(this));
|
| - walker.walk(ast);
|
| - },
|
| -
|
| - /**
|
| - * @param {?Acorn.TokenOrComment} token
|
| - * @param {string} format
|
| - */
|
| - _push: function(token, format)
|
| - {
|
| - for (var i = 0; i < format.length; ++i) {
|
| - if (format[i] === "s")
|
| - this._builder.addSoftSpace();
|
| - else if (format[i] === "S")
|
| - this._builder.addHardSpace();
|
| - else if (format[i] === "n")
|
| - this._builder.addNewLine();
|
| - else if (format[i] === ">")
|
| - this._builder.increaseNestingLevel();
|
| - else if (format[i] === "<")
|
| - this._builder.decreaseNestingLevel();
|
| - else if (format[i] === "t")
|
| - this._builder.addToken(this._content.substring(token.start, token.end), token.start, this._tokenizer.tokenLineStart(), this._tokenizer.tokenLineEnd());
|
| - }
|
| - },
|
| -
|
| - /**
|
| - * @param {!ESTree.Node} node
|
| - */
|
| - _beforeVisit: function(node)
|
| - {
|
| - if (!node.parent)
|
| - return;
|
| - while (this._tokenizer.peekToken() && this._tokenizer.peekToken().start < node.start) {
|
| - var token = /** @type {!Acorn.TokenOrComment} */(this._tokenizer.nextToken());
|
| - var format = this._formatToken(node.parent, token);
|
| - this._push(token, format);
|
| - }
|
| - },
|
| -
|
| - /**
|
| - * @param {!ESTree.Node} node
|
| - */
|
| - _afterVisit: function(node)
|
| - {
|
| - while (this._tokenizer.peekToken() && this._tokenizer.peekToken().start < node.end) {
|
| - var token = /** @type {!Acorn.TokenOrComment} */(this._tokenizer.nextToken());
|
| - var format = this._formatToken(node, token);
|
| - this._push(token, format);
|
| - }
|
| - this._push(null, this._finishNode(node));
|
| - },
|
| -
|
| - /**
|
| - * @param {!ESTree.Node} node
|
| - * @return {boolean}
|
| - */
|
| - _inForLoopHeader: function(node)
|
| - {
|
| - var parent = node.parent;
|
| - if (!parent)
|
| - return false;
|
| - if (parent.type === "ForStatement")
|
| - return node === parent.init || node === parent.test || node === parent.update;
|
| - if (parent.type === "ForInStatement" || parent.type === "ForOfStatement")
|
| - return node === parent.left || parent.right;
|
| - return false;
|
| - },
|
| -
|
| - /**
|
| - * @param {!ESTree.Node} node
|
| - * @param {!Acorn.TokenOrComment} token
|
| - * @return {string}
|
| - */
|
| - _formatToken: function(node, token)
|
| - {
|
| - var AT = WebInspector.AcornTokenizer;
|
| - if (AT.lineComment(token))
|
| - return "tn";
|
| - if (AT.blockComment(token))
|
| - return "t";
|
| - if (node.type === "ContinueStatement" || node.type === "BreakStatement") {
|
| - return node.label && AT.keyword(token) ? "ts" : "t";
|
| - } else if (node.type === "Identifier") {
|
| - return "t";
|
| - } else if (node.type === "ReturnStatement") {
|
| - if (AT.punctuator(token, ";"))
|
| - return "t";
|
| - return node.argument ? "ts" : "t";
|
| - } else if (node.type === "Property") {
|
| - if (AT.punctuator(token, ":"))
|
| - return "ts";
|
| - return "t";
|
| - } else if (node.type === "ArrayExpression") {
|
| - if (AT.punctuator(token, ","))
|
| - return "ts";
|
| - return "t";
|
| - } else if (node.type === "LabeledStatement") {
|
| - if (AT.punctuator(token, ":"))
|
| - return "ts";
|
| - } else if (node.type === "LogicalExpression" || node.type === "AssignmentExpression" || node.type === "BinaryExpression") {
|
| - if (AT.punctuator(token) && !AT.punctuator(token, "()"))
|
| - return "sts";
|
| - } else if (node.type === "ConditionalExpression") {
|
| - if (AT.punctuator(token, "?:"))
|
| - return "sts";
|
| - } else if (node.type === "VariableDeclarator") {
|
| - if (AT.punctuator(token, "="))
|
| - return "sts";
|
| - } else if (node.type === "FunctionDeclaration") {
|
| - if (AT.punctuator(token, ",)"))
|
| - return "ts";
|
| - } else if (node.type === "FunctionExpression") {
|
| - if (AT.punctuator(token, ",)"))
|
| - return "ts";
|
| - if (AT.keyword(token, "function"))
|
| - return node.id ? "ts" : "t";
|
| - } else if (node.type === "WithStatement") {
|
| - if (AT.punctuator(token, ")"))
|
| - return node.body && node.body.type === "BlockStatement" ? "ts" : "tn>";
|
| - } else if (node.type === "SwitchStatement") {
|
| - if (AT.punctuator(token, "{"))
|
| - return "tn>";
|
| - if (AT.punctuator(token, "}"))
|
| - return "n<tn";
|
| - if (AT.punctuator(token, ")"))
|
| - return "ts";
|
| - } else if (node.type === "SwitchCase") {
|
| - if (AT.keyword(token, "case"))
|
| - return "n<ts";
|
| - if (AT.keyword(token, "default"))
|
| - return "n<t";
|
| - if (AT.punctuator(token, ":"))
|
| - return "tn>";
|
| - } else if (node.type === "VariableDeclaration") {
|
| - if (AT.punctuator(token, ",")) {
|
| - var allVariablesInitialized = true;
|
| - var declarations = /** @type {!Array.<!ESTree.Node>} */(node.declarations);
|
| - for (var i = 0; i < declarations.length; ++i)
|
| - allVariablesInitialized = allVariablesInitialized && !!declarations[i].init;
|
| - return !this._inForLoopHeader(node) && allVariablesInitialized ? "nSSts" : "ts";
|
| - }
|
| - } else if (node.type === "BlockStatement") {
|
| - if (AT.punctuator(token, "{"))
|
| - return node.body.length ? "tn>" : "t";
|
| - if (AT.punctuator(token, "}"))
|
| - return node.body.length ? "n<t" : "t";
|
| - } else if (node.type === "CatchClause") {
|
| - if (AT.punctuator(token, ")"))
|
| - return "ts";
|
| - } else if (node.type === "ObjectExpression") {
|
| - if (!node.properties.length)
|
| - return "t";
|
| - if (AT.punctuator(token, "{"))
|
| - return "tn>";
|
| - if (AT.punctuator(token, "}"))
|
| - return "n<t";
|
| - if (AT.punctuator(token, ","))
|
| - return "tn";
|
| - } else if (node.type === "IfStatement") {
|
| - if (AT.punctuator(token, ")"))
|
| - return node.consequent && node.consequent.type === "BlockStatement" ? "ts" : "tn>";
|
| -
|
| - if (AT.keyword(token, "else")) {
|
| - var preFormat = node.consequent && node.consequent.type === "BlockStatement" ? "st" : "n<t";
|
| - var postFormat = "n>";
|
| - if (node.alternate && (node.alternate.type === "BlockStatement" || node.alternate.type === "IfStatement"))
|
| - postFormat = "s";
|
| - return preFormat + postFormat;
|
| - }
|
| - } else if (node.type === "CallExpression") {
|
| - if (AT.punctuator(token, ","))
|
| - return "ts";
|
| - } else if (node.type === "SequenceExpression" && AT.punctuator(token, ",")) {
|
| - return node.parent && node.parent.type === "SwitchCase" ? "ts" : "tn";
|
| - } else if (node.type === "ForStatement" || node.type === "ForOfStatement" || node.type === "ForInStatement") {
|
| - if (AT.punctuator(token, ";"))
|
| - return "ts";
|
| - if (AT.keyword(token, "in") || AT.identifier(token, "of"))
|
| - return "sts";
|
| -
|
| - if (AT.punctuator(token, ")"))
|
| - return node.body && node.body.type === "BlockStatement" ? "ts" : "tn>";
|
| - } else if (node.type === "WhileStatement") {
|
| - if (AT.punctuator(token, ")"))
|
| - return node.body && node.body.type === "BlockStatement" ? "ts" : "tn>";
|
| - } else if (node.type === "DoWhileStatement") {
|
| - var blockBody = node.body && node.body.type === "BlockStatement";
|
| - if (AT.keyword(token, "do"))
|
| - return blockBody ? "ts" : "tn>";
|
| - if (AT.keyword(token, "while"))
|
| - return blockBody ? "sts" : "n<ts";
|
| - } else if (node.type === "ClassBody") {
|
| - if (AT.punctuator(token, "{"))
|
| - return "stn>";
|
| - if (AT.punctuator(token, "}"))
|
| - return "<ntn";
|
| - return "t";
|
| - } else if (node.type === "YieldExpression") {
|
| - return "t";
|
| - } else if (node.type === "Super") {
|
| - return "t";
|
| - }
|
| - return AT.keyword(token) && !AT.keyword(token, "this") ? "ts" : "t";
|
| - },
|
| -
|
| - /**
|
| - * @param {!ESTree.Node} node
|
| - * @return {string}
|
| - */
|
| - _finishNode: function(node)
|
| - {
|
| - if (node.type === "WithStatement") {
|
| - if (node.body && node.body.type !== "BlockStatement")
|
| - return "n<";
|
| - } else if (node.type === "VariableDeclaration") {
|
| - if (!this._inForLoopHeader(node))
|
| - return "n";
|
| - } else if (node.type === "ForStatement" || node.type === "ForOfStatement" || node.type === "ForInStatement") {
|
| - if (node.body && node.body.type !== "BlockStatement")
|
| - return "n<";
|
| - } else if (node.type === "BlockStatement") {
|
| - if (node.parent && node.parent.type === "IfStatement" && node.parent.alternate && node.parent.consequent === node)
|
| - return "";
|
| - if (node.parent && node.parent.type === "FunctionExpression" && node.parent.parent && node.parent.parent.type === "Property")
|
| - return "";
|
| - if (node.parent && node.parent.type === "FunctionExpression" && node.parent.parent && node.parent.parent.type === "CallExpression")
|
| - return "";
|
| - if (node.parent && node.parent.type === "DoWhileStatement")
|
| - return "";
|
| - if (node.parent && node.parent.type === "TryStatement" && node.parent.block == node)
|
| - return "s";
|
| - if (node.parent && node.parent.type === "CatchClause" && node.parent.parent.finalizer)
|
| - return "s";
|
| - return "n";
|
| - } else if (node.type === "WhileStatement") {
|
| - if (node.body && node.body.type !== "BlockStatement")
|
| - return "n<";
|
| - } else if (node.type === "IfStatement") {
|
| - if (node.alternate) {
|
| - if (node.alternate.type !== "BlockStatement" && node.alternate.type !== "IfStatement")
|
| - return "<";
|
| - } else if (node.consequent) {
|
| - if (node.consequent.type !== "BlockStatement")
|
| - return "<";
|
| - }
|
| - } else if (node.type === "BreakStatement" || node.type === "ThrowStatement" || node.type === "ReturnStatement" || node.type === "ExpressionStatement") {
|
| - return "n";
|
| - }
|
| - return "";
|
| - }
|
| -}
|
| -
|
| -/**
|
| - * @constructor
|
| - * @param {!{original: !Array.<number>, formatted: !Array.<number>}} mapping
|
| - * @param {number} originalOffset
|
| - * @param {number} formattedOffset
|
| - * @param {string} indentString
|
| - */
|
| -FormatterWorker.FormattedContentBuilder = function(mapping, originalOffset, formattedOffset, indentString)
|
| -{
|
| - this._originalOffset = originalOffset;
|
| - this._lastOriginalPosition = 0;
|
| -
|
| - this._formattedContent = [];
|
| - this._formattedContentLength = 0;
|
| - this._formattedOffset = formattedOffset;
|
| - this._lastFormattedPosition = 0;
|
| -
|
| - this._mapping = mapping;
|
| -
|
| - this._lineNumber = 0;
|
| - this._nestingLevel = 0;
|
| - this._indentString = indentString;
|
| - /** @type {!Map<number, string>} */
|
| - this._cachedIndents = new Map();
|
| -
|
| - this._newLines = 0;
|
| - this._softSpace = false;
|
| - this._hardSpaces = 0;
|
| -}
|
| -
|
| -FormatterWorker.FormattedContentBuilder.prototype = {
|
| - /**
|
| - * @param {string} token
|
| - * @param {number} startPosition
|
| - * @param {number} startLine
|
| - * @param {number} endLine
|
| - */
|
| - addToken: function(token, startPosition, startLine, endLine)
|
| - {
|
| - if (this._lineNumber < startLine)
|
| - this._newLines = Math.max(this._newLines, startLine - this._lineNumber);
|
| -
|
| - var last = this._formattedContent.peekLast();
|
| - if (last && /\w/.test(last[last.length - 1]) && /\w/.test(token))
|
| - this.addSoftSpace();
|
| -
|
| - this._appendFormatting();
|
| -
|
| - // Insert token.
|
| - this._addMappingIfNeeded(startPosition);
|
| - this._addText(token);
|
| - this._lineNumber = endLine;
|
| - },
|
| -
|
| - addSoftSpace: function()
|
| - {
|
| - if (!this._hardSpaces)
|
| - this._softSpace = true;
|
| - },
|
| -
|
| - addHardSpace: function()
|
| - {
|
| - this._softSpace = false;
|
| - ++this._hardSpaces;
|
| - },
|
| -
|
| - /**
|
| - * @param {boolean=} noSquash
|
| - */
|
| - addNewLine: function(noSquash)
|
| - {
|
| - if (noSquash)
|
| - ++this._newLines;
|
| - else
|
| - this._newLines = this._newLines || 1;
|
| - },
|
| -
|
| - increaseNestingLevel: function()
|
| - {
|
| - this._nestingLevel += 1;
|
| - },
|
| -
|
| - decreaseNestingLevel: function()
|
| - {
|
| - if (this._nestingLevel > 0)
|
| - this._nestingLevel -= 1;
|
| - },
|
| -
|
| - _appendFormatting: function()
|
| - {
|
| - if (this._newLines) {
|
| - for (var i = 0; i < this._newLines; ++i)
|
| - this._addText("\n");
|
| - this._addText(this._indent());
|
| - } else if (this._softSpace) {
|
| - this._addText(" ");
|
| - }
|
| - if (this._hardSpaces) {
|
| - for (var i = 0; i < this._hardSpaces; ++i)
|
| - this._addText(" ");
|
| - }
|
| - this._newLines = 0;
|
| - this._softSpace = false;
|
| - this._hardSpaces = 0;
|
| - },
|
| -
|
| - /**
|
| - * @return {string}
|
| - */
|
| - content: function()
|
| - {
|
| - return this._formattedContent.join("") + (this._newLines ? "\n" : "");
|
| - },
|
| -
|
| - /**
|
| - * @return {string}
|
| - */
|
| - _indent: function()
|
| - {
|
| - var cachedValue = this._cachedIndents.get(this._nestingLevel)
|
| - if (cachedValue)
|
| - return cachedValue;
|
| -
|
| - var fullIndent = "";
|
| - for (var i = 0; i < this._nestingLevel; ++i)
|
| - fullIndent += this._indentString;
|
| -
|
| - // Cache a maximum of 20 nesting level indents.
|
| - if (this._nestingLevel <= 20)
|
| - this._cachedIndents.set(this._nestingLevel, fullIndent);
|
| - return fullIndent;
|
| - },
|
| -
|
| - /**
|
| - * @param {string} text
|
| - */
|
| - _addText: function(text)
|
| - {
|
| - this._formattedContent.push(text);
|
| - this._formattedContentLength += text.length;
|
| - },
|
| -
|
| - /**
|
| - * @param {number} originalPosition
|
| - */
|
| - _addMappingIfNeeded: function(originalPosition)
|
| - {
|
| - if (originalPosition - this._lastOriginalPosition === this._formattedContentLength - this._lastFormattedPosition)
|
| - return;
|
| - this._mapping.original.push(this._originalOffset + originalPosition);
|
| - this._lastOriginalPosition = originalPosition;
|
| - this._mapping.formatted.push(this._formattedOffset + this._formattedContentLength);
|
| - this._lastFormattedPosition = this._formattedContentLength;
|
| - }
|
| -}
|
|
|