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

Side by Side Diff: third_party/WebKit/Source/devtools/front_end/formatter_worker/FormattedContentBuilder.js

Issue 1835783002: DevTools: simplify WI.FormattedContentBuilder (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebaseline tests Created 4 years, 8 months 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 unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 /** 5 /**
6 * @constructor 6 * @constructor
7 * @param {string} indentString 7 * @param {string} indentString
8 */ 8 */
9 WebInspector.FormattedContentBuilder = function(indentString) 9 WebInspector.FormattedContentBuilder = function(indentString)
10 { 10 {
11 this._lastOriginalPosition = 0; 11 this._lastOriginalPosition = 0;
12 12
13 this._formattedContent = []; 13 this._formattedContent = [];
14 this._formattedContentLength = 0; 14 this._formattedContentLength = 0;
15 this._lastFormattedPosition = 0; 15 this._lastFormattedPosition = 0;
16 16
17 /** @type {!{original: !Array.<number>, formatted: !Array.<number>}} */ 17 /** @type {!{original: !Array.<number>, formatted: !Array.<number>}} */
18 this._mapping = { original: [0], formatted: [0] }; 18 this._mapping = { original: [0], formatted: [0] };
19 19
20 this._lineNumber = 0;
21 this._nestingLevel = 0; 20 this._nestingLevel = 0;
22 this._indentString = indentString; 21 this._indentString = indentString;
23 /** @type {!Map<number, string>} */ 22 /** @type {!Map<number, string>} */
24 this._cachedIndents = new Map(); 23 this._cachedIndents = new Map();
25 24
26 this._newLines = 0; 25 this._newLines = 0;
27 this._softSpace = false; 26 this._softSpace = false;
28 this._hardSpaces = 0; 27 this._hardSpaces = 0;
29 } 28 }
30 29
31 WebInspector.FormattedContentBuilder.prototype = { 30 WebInspector.FormattedContentBuilder.prototype = {
32 /** 31 /**
33 * @param {string} token 32 * @param {string} token
34 * @param {number} startPosition 33 * @param {number} offset
35 * @param {number} startLine
36 * @param {number} endLine
37 */ 34 */
38 addToken: function(token, startPosition, startLine, endLine) 35 addToken: function(token, offset)
39 { 36 {
40 if (this._lineNumber < startLine)
41 this._newLines = Math.max(this._newLines, startLine - this._lineNumb er);
42
43 var last = this._formattedContent.peekLast(); 37 var last = this._formattedContent.peekLast();
44 if (last && /\w/.test(last[last.length - 1]) && /\w/.test(token)) 38 if (last && /\w/.test(last[last.length - 1]) && /\w/.test(token))
45 this.addSoftSpace(); 39 this.addSoftSpace();
46 40
47 this._appendFormatting(); 41 this._appendFormatting();
48 42
49 // Insert token. 43 // Insert token.
50 this._addMappingIfNeeded(startPosition); 44 this._addMappingIfNeeded(offset);
51 this._addText(token); 45 this._addText(token);
52 this._lineNumber = endLine;
53 }, 46 },
54 47
55 addSoftSpace: function() 48 addSoftSpace: function()
56 { 49 {
57 if (!this._hardSpaces) 50 if (!this._hardSpaces)
58 this._softSpace = true; 51 this._softSpace = true;
59 }, 52 },
60 53
61 addHardSpace: function() 54 addHardSpace: function()
62 { 55 {
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
155 { 148 {
156 if (originalPosition - this._lastOriginalPosition === this._formattedCon tentLength - this._lastFormattedPosition) 149 if (originalPosition - this._lastOriginalPosition === this._formattedCon tentLength - this._lastFormattedPosition)
157 return; 150 return;
158 this._mapping.original.push(originalPosition); 151 this._mapping.original.push(originalPosition);
159 this._lastOriginalPosition = originalPosition; 152 this._lastOriginalPosition = originalPosition;
160 this._mapping.formatted.push(this._formattedContentLength); 153 this._mapping.formatted.push(this._formattedContentLength);
161 this._lastFormattedPosition = this._formattedContentLength; 154 this._lastFormattedPosition = this._formattedContentLength;
162 } 155 }
163 } 156 }
164 157
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698