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

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

Powered by Google App Engine
This is Rietveld 408576698