UNPKG

@hashgraph/solo

Version:

An opinionated CLI tool to deploy and manage private Hedera Networks.

71 lines 2.64 kB
// SPDX-License-Identifier: Apache-2.0 import { UnsupportedOperationError } from '../errors/unsupported-operation-error.js'; export class StringEx { static EMPTY = ''; static DASH = '-'; static UNDERSCORE = '_'; static PERIOD = '.'; constructor() { throw new UnsupportedOperationError('This class cannot be instantiated'); } static isUppercase(value) { return value === value.toUpperCase(); } static isEmpty(value) { return !value || value.trim().length === 0; } static isUnderscored(value) { return value.includes(StringEx.UNDERSCORE); } static isDashed(value) { return value.includes(StringEx.DASH); } static nounCase(value) { if (StringEx.isEmpty(value)) { return value; } return value.charAt(0).toUpperCase() + value.slice(1); } static verbCase(value) { if (StringEx.isEmpty(value)) { return value; } return value.charAt(0).toLowerCase() + value.slice(1); } static kebabToCamelCase(value) { if (StringEx.isEmpty(value) || !StringEx.isDashed(value)) { return StringEx.verbCase(value); } const parts = value.split(StringEx.DASH); for (let index = 0; index < parts.length; index++) { const part = parts[index]; parts[index] = index === 0 ? StringEx.verbCase(part) : StringEx.nounCase(part); } return parts.join(StringEx.EMPTY); } static snakeToCamelCase(value) { return StringEx.snakeKebabToXJoinedCase(value, StringEx.EMPTY, StringEx.verbCase, StringEx.nounCase); } static snakeToDotCase(value) { return StringEx.snakeKebabToXJoinedCase(value, StringEx.PERIOD, StringEx.verbCase, StringEx.verbCase); } static snakeKebabToXJoinedCase(value, separator, firstWordCase, subsequentWordCase) { if (StringEx.isEmpty(value) || !StringEx.isUnderscored(value)) { return firstWordCase(value); } const parts = value.split(StringEx.UNDERSCORE); for (let index = 0; index < parts.length; index++) { const part = parts[index]; parts[index] = StringEx.kebabToCamelCase(part.toLowerCase()); parts[index] = index === 0 ? firstWordCase(parts[index]) : subsequentWordCase(parts[index]); } return parts.join(separator); } static camelCaseToKebab(key) { if (StringEx.isEmpty(key)) { return key; } return key.replaceAll(/([a-z])([A-Z])/g, '$1-$2').toLowerCase(); } } //# sourceMappingURL=string-ex.js.map