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

Side by Side Diff: third_party/WebKit/Source/devtools/front_end/platform/utilities.js

Issue 1809533003: DevTools: remove illusionary caching from String.prototype.lineEndings (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: String.prototype.lineEndings -> String.prototype.computeLineEndings Created 4 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 /* 1 /*
2 * Copyright (C) 2007 Apple Inc. All rights reserved. 2 * Copyright (C) 2007 Apple Inc. All rights reserved.
3 * Copyright (C) 2012 Google Inc. All rights reserved. 3 * Copyright (C) 2012 Google Inc. All rights reserved.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions 6 * modification, are permitted provided that the following conditions
7 * are met: 7 * are met:
8 * 8 *
9 * 1. Redistributions of source code must retain the above copyright 9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer. 10 * notice, this list of conditions and the following disclaimer.
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
105 * @return {boolean} 105 * @return {boolean}
106 */ 106 */
107 String.prototype.isWhitespace = function() 107 String.prototype.isWhitespace = function()
108 { 108 {
109 return /^\s*$/.test(this); 109 return /^\s*$/.test(this);
110 } 110 }
111 111
112 /** 112 /**
113 * @return {!Array.<number>} 113 * @return {!Array.<number>}
114 */ 114 */
115 String.prototype.lineEndings = function() 115 String.prototype.computeLineEndings = function()
116 { 116 {
117 if (!this._lineEndings) { 117 var endings = this.findAll("\n");
118 this._lineEndings = this.findAll("\n"); 118 endings.push(this.length);
119 this._lineEndings.push(this.length); 119 return endings;
120 }
121 return this._lineEndings;
122 } 120 }
123 121
124 /** 122 /**
125 * @return {number}
126 */
127 String.prototype.lineCount = function()
128 {
129 var lineEndings = this.lineEndings();
130 return lineEndings.length;
131 }
132
133 /**
134 * @param {number} lineNumber
135 * @param {number} columNumber
136 * @return {number}
137 */
138 String.prototype.offsetFromPosition = function(lineNumber, columNumber)
139 {
140 return (lineNumber ? this.lineEndings()[lineNumber - 1] + 1 : 0) + columNumb er;
141 }
142
143 /**
144 * @return {string}
145 */
146 String.prototype.lineAt = function(lineNumber)
147 {
148 var lineEndings = this.lineEndings();
149 var lineStart = lineNumber > 0 ? lineEndings[lineNumber - 1] + 1 : 0;
150 var lineEnd = lineEndings[lineNumber];
151 var lineContent = this.substring(lineStart, lineEnd);
152 if (lineContent.length > 0 && lineContent.charAt(lineContent.length - 1) === "\r")
153 lineContent = lineContent.substring(0, lineContent.length - 1);
154 return lineContent;
155 }
156
157 /**
158 * @param {string} chars 123 * @param {string} chars
159 * @return {string} 124 * @return {string}
160 */ 125 */
161 String.prototype.escapeCharacters = function(chars) 126 String.prototype.escapeCharacters = function(chars)
162 { 127 {
163 var foundChar = false; 128 var foundChar = false;
164 for (var i = 0; i < chars.length; ++i) { 129 for (var i = 0; i < chars.length; ++i) {
165 if (this.indexOf(chars.charAt(i)) !== -1) { 130 if (this.indexOf(chars.charAt(i)) !== -1) {
166 foundChar = true; 131 foundChar = true;
167 break; 132 break;
(...skipping 1498 matching lines...) Expand 10 before | Expand all | Expand 10 after
1666 _tryMerge: function(first, second) 1631 _tryMerge: function(first, second)
1667 { 1632 {
1668 var merged = this._mergeCallback && this._mergeCallback(first, second); 1633 var merged = this._mergeCallback && this._mergeCallback(first, second);
1669 if (!merged) 1634 if (!merged)
1670 return null; 1635 return null;
1671 merged.begin = first.begin; 1636 merged.begin = first.begin;
1672 merged.end = Math.max(first.end, second.end); 1637 merged.end = Math.max(first.end, second.end);
1673 return merged; 1638 return merged;
1674 } 1639 }
1675 } 1640 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698