@terrazzo/token-tools
Version:
Various utilities for token types
47 lines • 1.44 kB
JavaScript
/** Pad string lengths */
export function padStr(input, length, alignment = 'left') {
const d = Math.min(length || 0, 1000) - // guard against NaNs and Infinity
input.length;
if (d > 0) {
switch (alignment) {
case 'left': {
return `${input}${' '.repeat(d)}`;
}
case 'right': {
return `${' '.repeat(d)}${input}`;
}
case 'center': {
const left = Math.floor(d / 2);
const right = d - left;
return `${' '.repeat(left)}${input}${' '.repeat(right)}`;
}
}
}
return input;
}
/** Pluralize strings */
export function pluralize(count, singular, plural) {
return count === 1 ? singular : plural;
}
/** Turn a string into kebab-case */
export function kebabCase(str) {
let output = '';
for (const c of str.split('')) {
if (c === '.') {
output += '-';
continue;
}
let isFirstUppercase = true;
if (isFirstUppercase && /\p{Uppercase_Letter}/u.test(c)) {
output += `-${c.toLocaleLowerCase()}`;
isFirstUppercase = false; // don’t break apart multiple consecutive uppercase letters
continue;
}
else {
isFirstUppercase = true; // reset
}
output += c;
}
return output;
}
//# sourceMappingURL=string.js.map