Initial commit
This commit is contained in:
39
node_modules/@microsoft/tsdoc/lib-commonjs/emitters/StringBuilder.js
generated
vendored
Normal file
39
node_modules/@microsoft/tsdoc/lib-commonjs/emitters/StringBuilder.js
generated
vendored
Normal file
@@ -0,0 +1,39 @@
|
||||
"use strict";
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.
|
||||
// See LICENSE in the project root for license information.
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.StringBuilder = void 0;
|
||||
/**
|
||||
* This class allows a large text string to be constructed incrementally by appending small chunks. The final
|
||||
* string can be obtained by calling StringBuilder.toString().
|
||||
*
|
||||
* @remarks
|
||||
* A naive approach might use the `+=` operator to append strings: This would have the downside of copying
|
||||
* the entire string each time a chunk is appended, resulting in `O(n^2)` bytes of memory being allocated
|
||||
* (and later freed by the garbage collector), and many of the allocations could be very large objects.
|
||||
* StringBuilder avoids this overhead by accumulating the chunks in an array, and efficiently joining them
|
||||
* when `getText()` is finally called.
|
||||
*/
|
||||
class StringBuilder {
|
||||
constructor() {
|
||||
this._chunks = [];
|
||||
}
|
||||
/** {@inheritdoc IStringBuilder.append} */
|
||||
append(text) {
|
||||
this._chunks.push(text);
|
||||
}
|
||||
/** {@inheritdoc IStringBuilder.toString} */
|
||||
toString() {
|
||||
if (this._chunks.length === 0) {
|
||||
return '';
|
||||
}
|
||||
if (this._chunks.length > 1) {
|
||||
const joined = this._chunks.join('');
|
||||
this._chunks.length = 1;
|
||||
this._chunks[0] = joined;
|
||||
}
|
||||
return this._chunks[0];
|
||||
}
|
||||
}
|
||||
exports.StringBuilder = StringBuilder;
|
||||
//# sourceMappingURL=StringBuilder.js.map
|
||||
Reference in New Issue
Block a user