molstar
Version:
A comprehensive macromolecular library.
110 lines • 4.35 kB
JavaScript
/**
* Copyright (c) 2018-2019 mol* contributors, licensed under MIT, See LICENSE file for more info.
*
* @author Alexander Rose <alexander.rose@weirdbyte.de>
* @author David Sehnal <david.sehnal@gmail.com>
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.stripTags = exports.trimCharEnd = exports.trimCharStart = exports.trimChar = exports.interpolate = exports.substringStartsWith = exports.stringToWords = exports.kebabCaseToWords = exports.splitKebabCase = exports.snakeCaseToWords = exports.splitSnakeCase = exports.capitalize = exports.upperCaseAny = exports.upperCase = exports.lowerCase = exports.camelCaseToWords = exports.splitCamelCase = exports.indentString = void 0;
var tslib_1 = require("tslib");
var reLine = /^/mg;
function indentString(str, count, indent) {
return count === 0 ? str : str.replace(reLine, indent.repeat(count));
}
exports.indentString = indentString;
/** Add space between camelCase text. */
function splitCamelCase(str, separator) {
if (separator === void 0) { separator = ' '; }
return str.replace(/([a-z\xE0-\xFF])([A-Z\xC0\xDF])/g, "$1" + separator + "$2");
}
exports.splitCamelCase = splitCamelCase;
/** Split camelCase text and capitalize. */
function camelCaseToWords(str) {
return capitalize(splitCamelCase(str));
}
exports.camelCaseToWords = camelCaseToWords;
var lowerCase = function (str) { return str.toLowerCase(); };
exports.lowerCase = lowerCase;
var upperCase = function (str) { return str.toUpperCase(); };
exports.upperCase = upperCase;
/** Return upper case if string, otherwise return empty string */
function upperCaseAny(value) {
if (!value)
return '';
return typeof value === 'string' ? value.toUpperCase() : ("" + value).toUpperCase();
}
exports.upperCaseAny = upperCaseAny;
/** Uppercase the first character of each word. */
function capitalize(str) {
return str.toLowerCase().replace(/^\w|\s\w/g, exports.upperCase);
}
exports.capitalize = capitalize;
function splitSnakeCase(str) {
return str.replace(/_/g, ' ');
}
exports.splitSnakeCase = splitSnakeCase;
function snakeCaseToWords(str) {
return capitalize(splitSnakeCase(str));
}
exports.snakeCaseToWords = snakeCaseToWords;
function splitKebabCase(str) {
return str.replace(/-/g, ' ');
}
exports.splitKebabCase = splitKebabCase;
function kebabCaseToWords(str) {
return capitalize(splitKebabCase(str));
}
exports.kebabCaseToWords = kebabCaseToWords;
function stringToWords(str) {
return capitalize(splitCamelCase(splitSnakeCase(splitKebabCase(str))));
}
exports.stringToWords = stringToWords;
function substringStartsWith(str, start, end, target) {
var len = target.length;
if (len > end - start)
return false;
for (var i = 0; i < len; i++) {
if (str.charCodeAt(start + i) !== target.charCodeAt(i))
return false;
}
return true;
}
exports.substringStartsWith = substringStartsWith;
function interpolate(str, params) {
var names = Object.keys(params);
var values = Object.values(params);
return new (Function.bind.apply(Function, (0, tslib_1.__spreadArray)((0, tslib_1.__spreadArray)([void 0], names, false), ["return `" + str + "`;"], false)))().apply(void 0, values);
}
exports.interpolate = interpolate;
function trimChar(str, char) {
var start = 0;
var end = str.length;
while (start < end && str[start] === char)
++start;
while (end > start && str[end - 1] === char)
--end;
return (start > 0 || end < str.length) ? str.substring(start, end) : str;
}
exports.trimChar = trimChar;
function trimCharStart(str, char) {
var start = 0;
var end = str.length;
while (start < end && str[start] === char)
++start;
return (start > 0) ? str.substring(start, end) : str;
}
exports.trimCharStart = trimCharStart;
function trimCharEnd(str, char) {
var end = str.length;
while (end > 0 && str[end - 1] === char)
--end;
return (end < str.length) ? str.substring(0, end) : str;
}
exports.trimCharEnd = trimCharEnd;
/** Simple function to strip tags from a string */
function stripTags(str) {
return str.replace(/<\/?[^>]+>/g, '');
}
exports.stripTags = stripTags;
//# sourceMappingURL=string.js.map
;