83 lines
2.3 KiB
JavaScript
83 lines
2.3 KiB
JavaScript
// ==========================================================================
|
|
// String utils
|
|
// ==========================================================================
|
|
|
|
import is from './is';
|
|
|
|
// Generate a random ID
|
|
export function generateId(prefix) {
|
|
return `${prefix}-${Math.floor(Math.random() * 10000)}`;
|
|
}
|
|
|
|
// Format string
|
|
export function format(input, ...args) {
|
|
if (is.empty(input)) {
|
|
return input;
|
|
}
|
|
|
|
return input.toString().replace(/{(\d+)}/g, (match, i) => args[i].toString());
|
|
}
|
|
|
|
// Get percentage
|
|
export function getPercentage(current, max) {
|
|
if (current === 0 || max === 0 || Number.isNaN(current) || Number.isNaN(max)) {
|
|
return 0;
|
|
}
|
|
|
|
return (current / max * 100).toFixed(2);
|
|
}
|
|
|
|
// Replace all occurances of a string in a string
|
|
export function replaceAll(input = '', find = '', replace = '') {
|
|
return input.replace(new RegExp(find.toString().replace(/([.*+?^=!:${}()|[\]/\\])/g, '\\$1'), 'g'), replace.toString());
|
|
}
|
|
|
|
// Convert to title case
|
|
export function toTitleCase(input = '') {
|
|
return input.toString().replace(/\w\S*/g, text => text.charAt(0).toUpperCase() + text.substr(1).toLowerCase());
|
|
}
|
|
|
|
// Convert string to pascalCase
|
|
export function toPascalCase(input = '') {
|
|
let string = input.toString();
|
|
|
|
// Convert kebab case
|
|
string = replaceAll(string, '-', ' ');
|
|
|
|
// Convert snake case
|
|
string = replaceAll(string, '_', ' ');
|
|
|
|
// Convert to title case
|
|
string = toTitleCase(string);
|
|
|
|
// Convert to pascal case
|
|
return replaceAll(string, ' ', '');
|
|
}
|
|
|
|
// Convert string to pascalCase
|
|
export function toCamelCase(input = '') {
|
|
let string = input.toString();
|
|
|
|
// Convert to pascal case
|
|
string = toPascalCase(string);
|
|
|
|
// Convert first character to lowercase
|
|
return string.charAt(0).toLowerCase() + string.slice(1);
|
|
}
|
|
|
|
// Remove HTML from a string
|
|
export function stripHTML(source) {
|
|
const fragment = document.createDocumentFragment();
|
|
const element = document.createElement('div');
|
|
fragment.appendChild(element);
|
|
element.innerHTML = source;
|
|
return fragment.firstChild.innerText;
|
|
}
|
|
|
|
// Like outerHTML, but also works for DocumentFragment
|
|
export function getHTML(element) {
|
|
const wrapper = document.createElement('div');
|
|
wrapper.appendChild(element);
|
|
return wrapper.innerHTML;
|
|
}
|