| Index: third_party/WebKit/Source/devtools/front_end/common/Text.js
|
| diff --git a/third_party/WebKit/Source/devtools/front_end/common/Text.js b/third_party/WebKit/Source/devtools/front_end/common/Text.js
|
| index 844f7f62e827bf9baacabb6f4ff3d3aab4b80bfd..23d4cebefe90fc297e02cc124c2d799406e1291c 100644
|
| --- a/third_party/WebKit/Source/devtools/front_end/common/Text.js
|
| +++ b/third_party/WebKit/Source/devtools/front_end/common/Text.js
|
| @@ -1,175 +1,163 @@
|
| // 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.
|
| -
|
| /**
|
| - * @constructor
|
| - * @param {string} value
|
| + * @unrestricted
|
| */
|
| -WebInspector.Text = function(value)
|
| -{
|
| +WebInspector.Text = class {
|
| + /**
|
| + * @param {string} value
|
| + */
|
| + constructor(value) {
|
| this._value = value;
|
| -};
|
| -
|
| -WebInspector.Text.prototype = {
|
| - /**
|
| - * @return {!Array<number>}
|
| - */
|
| - lineEndings: function()
|
| - {
|
| - if (!this._lineEndings)
|
| - this._lineEndings = this._value.computeLineEndings();
|
| - return this._lineEndings;
|
| - },
|
| -
|
| - /**
|
| - * @return {string}
|
| - */
|
| - value: function()
|
| - {
|
| - return this._value;
|
| - },
|
| -
|
| - /**
|
| - * @return {number}
|
| - */
|
| - lineCount: function()
|
| - {
|
| - var lineEndings = this.lineEndings();
|
| - return lineEndings.length;
|
| - },
|
| -
|
| - /**
|
| - * @param {number} lineNumber
|
| - * @param {number} columNumber
|
| - * @return {number}
|
| - */
|
| - offsetFromPosition: function(lineNumber, columNumber)
|
| - {
|
| - return (lineNumber ? this.lineEndings()[lineNumber - 1] + 1 : 0) + columNumber;
|
| - },
|
| -
|
| - /**
|
| - * @return {string}
|
| - */
|
| - lineAt: function(lineNumber)
|
| - {
|
| - var lineEndings = this.lineEndings();
|
| - var lineStart = lineNumber > 0 ? lineEndings[lineNumber - 1] + 1 : 0;
|
| - var lineEnd = lineEndings[lineNumber];
|
| - var lineContent = this._value.substring(lineStart, lineEnd);
|
| - if (lineContent.length > 0 && lineContent.charAt(lineContent.length - 1) === "\r")
|
| - lineContent = lineContent.substring(0, lineContent.length - 1);
|
| - return lineContent;
|
| - },
|
| -
|
| - /**
|
| - * @param {!WebInspector.TextRange} range
|
| - * @return {!WebInspector.SourceRange}
|
| - */
|
| - toSourceRange: function(range)
|
| - {
|
| - var start = this.offsetFromPosition(range.startLine, range.startColumn);
|
| - var end = this.offsetFromPosition(range.endLine, range.endColumn);
|
| - return new WebInspector.SourceRange(start, end - start);
|
| - },
|
| -
|
| - /**
|
| - * @param {!WebInspector.SourceRange} sourceRange
|
| - * @return {!WebInspector.TextRange}
|
| - */
|
| - toTextRange: function(sourceRange)
|
| - {
|
| - var cursor = new WebInspector.TextCursor(this.lineEndings());
|
| - var result = WebInspector.TextRange.createFromLocation(0, 0);
|
| -
|
| - cursor.resetTo(sourceRange.offset);
|
| - result.startLine = cursor.lineNumber();
|
| - result.startColumn = cursor.columnNumber();
|
| -
|
| - cursor.advance(sourceRange.offset + sourceRange.length);
|
| - result.endLine = cursor.lineNumber();
|
| - result.endColumn = cursor.columnNumber();
|
| - return result;
|
| - },
|
| -
|
| - /**
|
| - * @param {!WebInspector.TextRange} range
|
| - * @param {string} replacement
|
| - * @return {string}
|
| - */
|
| - replaceRange: function(range, replacement)
|
| - {
|
| - var sourceRange = this.toSourceRange(range);
|
| - return this._value.substring(0, sourceRange.offset) + replacement + this._value.substring(sourceRange.offset + sourceRange.length);
|
| - },
|
| -
|
| - /**
|
| - * @param {!WebInspector.TextRange} range
|
| - * @return {string}
|
| - */
|
| - extract: function(range)
|
| - {
|
| - var sourceRange = this.toSourceRange(range);
|
| - return this._value.substr(sourceRange.offset, sourceRange.length);
|
| - }
|
| + }
|
| +
|
| + /**
|
| + * @return {!Array<number>}
|
| + */
|
| + lineEndings() {
|
| + if (!this._lineEndings)
|
| + this._lineEndings = this._value.computeLineEndings();
|
| + return this._lineEndings;
|
| + }
|
| +
|
| + /**
|
| + * @return {string}
|
| + */
|
| + value() {
|
| + return this._value;
|
| + }
|
| +
|
| + /**
|
| + * @return {number}
|
| + */
|
| + lineCount() {
|
| + var lineEndings = this.lineEndings();
|
| + return lineEndings.length;
|
| + }
|
| +
|
| + /**
|
| + * @param {number} lineNumber
|
| + * @param {number} columNumber
|
| + * @return {number}
|
| + */
|
| + offsetFromPosition(lineNumber, columNumber) {
|
| + return (lineNumber ? this.lineEndings()[lineNumber - 1] + 1 : 0) + columNumber;
|
| + }
|
| +
|
| + /**
|
| + * @return {string}
|
| + */
|
| + lineAt(lineNumber) {
|
| + var lineEndings = this.lineEndings();
|
| + var lineStart = lineNumber > 0 ? lineEndings[lineNumber - 1] + 1 : 0;
|
| + var lineEnd = lineEndings[lineNumber];
|
| + var lineContent = this._value.substring(lineStart, lineEnd);
|
| + if (lineContent.length > 0 && lineContent.charAt(lineContent.length - 1) === '\r')
|
| + lineContent = lineContent.substring(0, lineContent.length - 1);
|
| + return lineContent;
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.TextRange} range
|
| + * @return {!WebInspector.SourceRange}
|
| + */
|
| + toSourceRange(range) {
|
| + var start = this.offsetFromPosition(range.startLine, range.startColumn);
|
| + var end = this.offsetFromPosition(range.endLine, range.endColumn);
|
| + return new WebInspector.SourceRange(start, end - start);
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.SourceRange} sourceRange
|
| + * @return {!WebInspector.TextRange}
|
| + */
|
| + toTextRange(sourceRange) {
|
| + var cursor = new WebInspector.TextCursor(this.lineEndings());
|
| + var result = WebInspector.TextRange.createFromLocation(0, 0);
|
| +
|
| + cursor.resetTo(sourceRange.offset);
|
| + result.startLine = cursor.lineNumber();
|
| + result.startColumn = cursor.columnNumber();
|
| +
|
| + cursor.advance(sourceRange.offset + sourceRange.length);
|
| + result.endLine = cursor.lineNumber();
|
| + result.endColumn = cursor.columnNumber();
|
| + return result;
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.TextRange} range
|
| + * @param {string} replacement
|
| + * @return {string}
|
| + */
|
| + replaceRange(range, replacement) {
|
| + var sourceRange = this.toSourceRange(range);
|
| + return this._value.substring(0, sourceRange.offset) + replacement +
|
| + this._value.substring(sourceRange.offset + sourceRange.length);
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.TextRange} range
|
| + * @return {string}
|
| + */
|
| + extract(range) {
|
| + var sourceRange = this.toSourceRange(range);
|
| + return this._value.substr(sourceRange.offset, sourceRange.length);
|
| + }
|
| };
|
|
|
| /**
|
| - * @constructor
|
| - * @param {!Array<number>} lineEndings
|
| + * @unrestricted
|
| */
|
| -WebInspector.TextCursor = function(lineEndings)
|
| -{
|
| +WebInspector.TextCursor = class {
|
| + /**
|
| + * @param {!Array<number>} lineEndings
|
| + */
|
| + constructor(lineEndings) {
|
| this._lineEndings = lineEndings;
|
| this._offset = 0;
|
| this._lineNumber = 0;
|
| this._columnNumber = 0;
|
| -};
|
| -
|
| -WebInspector.TextCursor.prototype = {
|
| - /**
|
| - * @param {number} offset
|
| - */
|
| - advance: function(offset)
|
| - {
|
| - this._offset = offset;
|
| - while (this._lineNumber < this._lineEndings.length && this._lineEndings[this._lineNumber] < this._offset)
|
| - ++this._lineNumber;
|
| - this._columnNumber = this._lineNumber ? this._offset - this._lineEndings[this._lineNumber - 1] - 1 : this._offset;
|
| - },
|
| -
|
| - /**
|
| - * @return {number}
|
| - */
|
| - offset: function()
|
| - {
|
| - return this._offset;
|
| - },
|
| -
|
| - /**
|
| - * @param {number} offset
|
| - */
|
| - resetTo: function(offset)
|
| - {
|
| - this._offset = offset;
|
| - this._lineNumber = this._lineEndings.lowerBound(offset);
|
| - this._columnNumber = this._lineNumber ? this._offset - this._lineEndings[this._lineNumber - 1] - 1 : this._offset;
|
| - },
|
| -
|
| - /**
|
| - * @return {number}
|
| - */
|
| - lineNumber: function()
|
| - {
|
| - return this._lineNumber;
|
| - },
|
| -
|
| - /**
|
| - * @return {number}
|
| - */
|
| - columnNumber: function()
|
| - {
|
| - return this._columnNumber;
|
| - }
|
| + }
|
| +
|
| + /**
|
| + * @param {number} offset
|
| + */
|
| + advance(offset) {
|
| + this._offset = offset;
|
| + while (this._lineNumber < this._lineEndings.length && this._lineEndings[this._lineNumber] < this._offset)
|
| + ++this._lineNumber;
|
| + this._columnNumber = this._lineNumber ? this._offset - this._lineEndings[this._lineNumber - 1] - 1 : this._offset;
|
| + }
|
| +
|
| + /**
|
| + * @return {number}
|
| + */
|
| + offset() {
|
| + return this._offset;
|
| + }
|
| +
|
| + /**
|
| + * @param {number} offset
|
| + */
|
| + resetTo(offset) {
|
| + this._offset = offset;
|
| + this._lineNumber = this._lineEndings.lowerBound(offset);
|
| + this._columnNumber = this._lineNumber ? this._offset - this._lineEndings[this._lineNumber - 1] - 1 : this._offset;
|
| + }
|
| +
|
| + /**
|
| + * @return {number}
|
| + */
|
| + lineNumber() {
|
| + return this._lineNumber;
|
| + }
|
| +
|
| + /**
|
| + * @return {number}
|
| + */
|
| + columnNumber() {
|
| + return this._columnNumber;
|
| + }
|
| };
|
|
|