//TODO: Make a seprate library export function formatFloat(value: number, decimalPlaces: number): string { return String( Number( Math.round(parseFloat(value + "e" + decimalPlaces)) + "e-" + decimalPlaces ) ); } /** * Take a string in camelCase, PascalCase, snake_case or UPPER_SNAKE_CASE and return a list of lowercase words */ export function splitWords(str: string) { return ( str // handle snake_case .replace(/_/g, " ") // handle camelCase and PascalCase .replace(/([a-z])([A-Z])/g, "$1 $2") // Convert all to lower case and split on space (' ') .toLowerCase() .trim() .split(/\s+/g) ); } /** * Will truncate the string to the desired length, adding an ellipsis (...) if needed * ASE ❤ 2019 */ export function truncate(s: string, length: number = 23): string { if (typeof s !== "string") { return ""; } if (s.length <= length) { return s; } return s.slice(0, length - 3) + "..."; } export function toUpperFirstLetter(str: string): string { str = String(str); if (str === "") { return str; } return str.charAt(0).toUpperCase() + str.slice(1); } export function toLowerFirstLetter(str: string): string { str = String(str); if (str === "") { return str; } return str.charAt(0).toLowerCase() + str.slice(1); } export function toLowerCamel(str: string): string { return toLowerFirstLetter(toUpperCamel(str)); } export function toUpperCamel(str: string): string { return splitWords(str) .map(toUpperFirstLetter) .join(""); } export function toLowerSnakeCase(str: string): string { const words = splitWords(str); const result = words.map(word => word.toLowerCase()).join("_"); return result; } export function toUpperSnakeCase(str: string): string { return toLowerSnakeCase(str).toUpperCase(); } /** * example_text -> Example Text */ export function toDisplay(str: string): string { const split = str .replace(/_/g, " ") .toLocaleLowerCase() .split(" "); const toUpper = split.map(s => toUpperFirstLetter(s)); return toUpper.join(" "); } /** * @param str * @see https://stackoverflow.com/questions/2901102/how-to-print-a-number-with-commas-as-thousands-separators-in-javascript */ export function numberWithCommas(str: string): string { return str.replace(/\B(?=(\d{3})+(?!\d))/g, ","); }