UNPKG

molstar

Version:

A comprehensive macromolecular library.

164 lines 6.04 kB
"use strict"; /** * Copyright (c) 2017 mol* contributors, licensed under MIT, See LICENSE file for more info. * * Adapted from CIFTools.js (https://github.com/dsehnal/CIFTools.js) * * @author David Sehnal <david.sehnal@gmail.com> */ Object.defineProperty(exports, "__esModule", { value: true }); exports.StringBuilder = void 0; var StringBuilder; (function (StringBuilder) { function create(chunkCapacity) { if (chunkCapacity === void 0) { chunkCapacity = 512; } return { current: [], offset: 0, capacity: chunkCapacity, chunks: [] }; } StringBuilder.create = create; function getString(builder) { if (!builder.chunks.length) { if (builder.current.length === builder.offset) return builder.current.join(''); return builder.current.splice(0, builder.offset).join(''); } if (builder.offset > 0) { builder.chunks[builder.chunks.length] = builder.current.length === builder.offset ? builder.current.join('') : builder.current.slice(0, builder.offset).join(''); } return builder.chunks.join(''); } StringBuilder.getString = getString; function getSize(builder) { var size = 0; for (var _i = 0, _a = builder.chunks; _i < _a.length; _i++) { var c = _a[_i]; size += c.length; } for (var i = 0; i < builder.offset; i++) size += builder.current[i].length; return size; } StringBuilder.getSize = getSize; function getChunks(builder) { if (builder.offset > 0) { if (builder.current.length === builder.offset) builder.chunks[builder.chunks.length] = builder.current.join(''); else builder.chunks[builder.chunks.length] = builder.current.slice(0, builder.offset).join(''); builder.offset = 0; } return builder.chunks; } StringBuilder.getChunks = getChunks; var __paddingSpaces = []; (function () { var s = ''; for (var i = 0; i < 512 /* Count */; i++) { __paddingSpaces[i] = s; s = s + ' '; } })(); function newline(builder) { writeSafe(builder, '\n'); } StringBuilder.newline = newline; function whitespace(builder, len) { if (len > 0) writeSafe(builder, __paddingSpaces[len]); } StringBuilder.whitespace = whitespace; function whitespace1(builder) { writeSafe(builder, ' '); } StringBuilder.whitespace1 = whitespace1; function write(builder, val) { if (!val) return; if (builder.offset === builder.capacity) { builder.chunks[builder.chunks.length] = builder.current.join(''); builder.offset = 0; } builder.current[builder.offset++] = val; } StringBuilder.write = write; /** Write without check. */ function writeSafe(builder, val) { if (builder.offset === builder.capacity) { builder.chunks[builder.chunks.length] = builder.current.join(''); builder.offset = 0; } builder.current[builder.offset++] = val; } StringBuilder.writeSafe = writeSafe; function writePadLeft(builder, val, totalWidth) { if (!val) { whitespace(builder, totalWidth); return; } var padding = totalWidth - val.length; whitespace(builder, padding); writeSafe(builder, val); } StringBuilder.writePadLeft = writePadLeft; function writePadRight(builder, val, totalWidth) { if (!val) { whitespace(builder, totalWidth); return; } var padding = totalWidth - val.length; writeSafe(builder, val); whitespace(builder, padding); } StringBuilder.writePadRight = writePadRight; function writeInteger(builder, val) { writeSafe(builder, '' + val); } StringBuilder.writeInteger = writeInteger; function writeIntegerAndSpace(builder, val) { writeSafe(builder, '' + val + ' '); } StringBuilder.writeIntegerAndSpace = writeIntegerAndSpace; function writeIntegerPadLeft(builder, val, totalWidth) { var s = '' + val; var padding = totalWidth - s.length; whitespace(builder, padding); writeSafe(builder, s); } StringBuilder.writeIntegerPadLeft = writeIntegerPadLeft; function writeIntegerPadRight(builder, val, totalWidth) { var s = '' + val; var padding = totalWidth - s.length; writeSafe(builder, s); whitespace(builder, padding); } StringBuilder.writeIntegerPadRight = writeIntegerPadRight; /** * @example writeFloat(123.2123, 100) -- 2 decim */ function writeFloat(builder, val, precisionMultiplier) { writeSafe(builder, '' + Math.round(precisionMultiplier * val) / precisionMultiplier); } StringBuilder.writeFloat = writeFloat; function writeFloatPadLeft(builder, val, precisionMultiplier, totalWidth) { var s = '' + Math.round(precisionMultiplier * val) / precisionMultiplier; var padding = totalWidth - s.length; whitespace(builder, padding); writeSafe(builder, s); } StringBuilder.writeFloatPadLeft = writeFloatPadLeft; function writeFloatPadRight(builder, val, precisionMultiplier, totalWidth) { var s = '' + Math.round(precisionMultiplier * val) / precisionMultiplier; var padding = totalWidth - s.length; writeSafe(builder, s); whitespace(builder, padding); } StringBuilder.writeFloatPadRight = writeFloatPadRight; })(StringBuilder || (StringBuilder = {})); exports.StringBuilder = StringBuilder; //# sourceMappingURL=string-builder.js.map