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

Side by Side Diff: third_party/WebKit/Source/devtools/front_end/text_utils/Text.js

Issue 2769843003: DevTools: split text_utils out of common module (Closed)
Patch Set: Created 3 years, 9 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 self['Common'] = self['Common'] || {}; 5 self['TextUtils'] = self['TextUtils'] || {};
dgozman 2017/03/22 22:54:12 Can we remove this line?
lushnikov 2017/03/23 00:50:50 Done.
6 6
7 /** 7 /**
8 * @unrestricted 8 * @unrestricted
9 */ 9 */
10 Common.Text = class { 10 TextUtils.Text = class {
11 /** 11 /**
12 * @param {string} value 12 * @param {string} value
13 */ 13 */
14 constructor(value) { 14 constructor(value) {
15 this._value = value; 15 this._value = value;
16 } 16 }
17 17
18 /** 18 /**
19 * @return {!Array<number>} 19 * @return {!Array<number>}
20 */ 20 */
(...skipping 22 matching lines...) Expand all
43 * @param {number} lineNumber 43 * @param {number} lineNumber
44 * @param {number} columnNumber 44 * @param {number} columnNumber
45 * @return {number} 45 * @return {number}
46 */ 46 */
47 offsetFromPosition(lineNumber, columnNumber) { 47 offsetFromPosition(lineNumber, columnNumber) {
48 return (lineNumber ? this.lineEndings()[lineNumber - 1] + 1 : 0) + columnNum ber; 48 return (lineNumber ? this.lineEndings()[lineNumber - 1] + 1 : 0) + columnNum ber;
49 } 49 }
50 50
51 /** 51 /**
52 * @param {number} offset 52 * @param {number} offset
53 * @return {!Common.Text.Position} 53 * @return {!TextUtils.Text.Position}
54 */ 54 */
55 positionFromOffset(offset) { 55 positionFromOffset(offset) {
56 var lineEndings = this.lineEndings(); 56 var lineEndings = this.lineEndings();
57 var lineNumber = lineEndings.lowerBound(offset); 57 var lineNumber = lineEndings.lowerBound(offset);
58 return {lineNumber: lineNumber, columnNumber: offset - (lineNumber && (lineE ndings[lineNumber - 1] + 1))}; 58 return {lineNumber: lineNumber, columnNumber: offset - (lineNumber && (lineE ndings[lineNumber - 1] + 1))};
59 } 59 }
60 60
61 /** 61 /**
62 * @return {string} 62 * @return {string}
63 */ 63 */
64 lineAt(lineNumber) { 64 lineAt(lineNumber) {
65 var lineEndings = this.lineEndings(); 65 var lineEndings = this.lineEndings();
66 var lineStart = lineNumber > 0 ? lineEndings[lineNumber - 1] + 1 : 0; 66 var lineStart = lineNumber > 0 ? lineEndings[lineNumber - 1] + 1 : 0;
67 var lineEnd = lineEndings[lineNumber]; 67 var lineEnd = lineEndings[lineNumber];
68 var lineContent = this._value.substring(lineStart, lineEnd); 68 var lineContent = this._value.substring(lineStart, lineEnd);
69 if (lineContent.length > 0 && lineContent.charAt(lineContent.length - 1) === '\r') 69 if (lineContent.length > 0 && lineContent.charAt(lineContent.length - 1) === '\r')
70 lineContent = lineContent.substring(0, lineContent.length - 1); 70 lineContent = lineContent.substring(0, lineContent.length - 1);
71 return lineContent; 71 return lineContent;
72 } 72 }
73 73
74 /** 74 /**
75 * @param {!Common.TextRange} range 75 * @param {!TextUtils.TextRange} range
76 * @return {!Common.SourceRange} 76 * @return {!TextUtils.SourceRange}
77 */ 77 */
78 toSourceRange(range) { 78 toSourceRange(range) {
79 var start = this.offsetFromPosition(range.startLine, range.startColumn); 79 var start = this.offsetFromPosition(range.startLine, range.startColumn);
80 var end = this.offsetFromPosition(range.endLine, range.endColumn); 80 var end = this.offsetFromPosition(range.endLine, range.endColumn);
81 return new Common.SourceRange(start, end - start); 81 return new TextUtils.SourceRange(start, end - start);
82 } 82 }
83 83
84 /** 84 /**
85 * @param {!Common.SourceRange} sourceRange 85 * @param {!TextUtils.SourceRange} sourceRange
86 * @return {!Common.TextRange} 86 * @return {!TextUtils.TextRange}
87 */ 87 */
88 toTextRange(sourceRange) { 88 toTextRange(sourceRange) {
89 var cursor = new Common.TextCursor(this.lineEndings()); 89 var cursor = new TextUtils.TextCursor(this.lineEndings());
90 var result = Common.TextRange.createFromLocation(0, 0); 90 var result = TextUtils.TextRange.createFromLocation(0, 0);
91 91
92 cursor.resetTo(sourceRange.offset); 92 cursor.resetTo(sourceRange.offset);
93 result.startLine = cursor.lineNumber(); 93 result.startLine = cursor.lineNumber();
94 result.startColumn = cursor.columnNumber(); 94 result.startColumn = cursor.columnNumber();
95 95
96 cursor.advance(sourceRange.offset + sourceRange.length); 96 cursor.advance(sourceRange.offset + sourceRange.length);
97 result.endLine = cursor.lineNumber(); 97 result.endLine = cursor.lineNumber();
98 result.endColumn = cursor.columnNumber(); 98 result.endColumn = cursor.columnNumber();
99 return result; 99 return result;
100 } 100 }
101 101
102 /** 102 /**
103 * @param {!Common.TextRange} range 103 * @param {!TextUtils.TextRange} range
104 * @param {string} replacement 104 * @param {string} replacement
105 * @return {string} 105 * @return {string}
106 */ 106 */
107 replaceRange(range, replacement) { 107 replaceRange(range, replacement) {
108 var sourceRange = this.toSourceRange(range); 108 var sourceRange = this.toSourceRange(range);
109 return this._value.substring(0, sourceRange.offset) + replacement + 109 return this._value.substring(0, sourceRange.offset) + replacement +
110 this._value.substring(sourceRange.offset + sourceRange.length); 110 this._value.substring(sourceRange.offset + sourceRange.length);
111 } 111 }
112 112
113 /** 113 /**
114 * @param {!Common.TextRange} range 114 * @param {!TextUtils.TextRange} range
115 * @return {string} 115 * @return {string}
116 */ 116 */
117 extract(range) { 117 extract(range) {
118 var sourceRange = this.toSourceRange(range); 118 var sourceRange = this.toSourceRange(range);
119 return this._value.substr(sourceRange.offset, sourceRange.length); 119 return this._value.substr(sourceRange.offset, sourceRange.length);
120 } 120 }
121 }; 121 };
122 122
123 /** @typedef {{lineNumber: number, columnNumber: number}} */ 123 /** @typedef {{lineNumber: number, columnNumber: number}} */
124 Common.Text.Position; 124 TextUtils.Text.Position;
125 125
126 /** 126 /**
127 * @unrestricted 127 * @unrestricted
128 */ 128 */
129 Common.TextCursor = class { 129 TextUtils.TextCursor = class {
130 /** 130 /**
131 * @param {!Array<number>} lineEndings 131 * @param {!Array<number>} lineEndings
132 */ 132 */
133 constructor(lineEndings) { 133 constructor(lineEndings) {
134 this._lineEndings = lineEndings; 134 this._lineEndings = lineEndings;
135 this._offset = 0; 135 this._offset = 0;
136 this._lineNumber = 0; 136 this._lineNumber = 0;
137 this._columnNumber = 0; 137 this._columnNumber = 0;
138 } 138 }
139 139
(...skipping 30 matching lines...) Expand all
170 return this._lineNumber; 170 return this._lineNumber;
171 } 171 }
172 172
173 /** 173 /**
174 * @return {number} 174 * @return {number}
175 */ 175 */
176 columnNumber() { 176 columnNumber() {
177 return this._columnNumber; 177 return this._columnNumber;
178 } 178 }
179 }; 179 };
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698