datasquirel/package-shared/utils/slugify.js
Benjamin Toby 4750131758 Updates
2024-12-12 06:43:07 +01:00

28 lines
728 B
JavaScript

// @ts-check
/**
* # Return the slug of a string
* @param {string} str input
* @returns {string} slug or empty string in case of error
* @example
* slugify("Hello World") // "hello-world"
* slugify("Yes!") // "yes"
* slugify("Hello!!! World!") // "hello-world"
*/
module.exports = function slugify(str) {
try {
return String(str)
.trim()
.toLowerCase()
.replace(/ {2,}/g, " ")
.replace(/ /g, "-")
.replace(/[^a-z0-9]/, "-")
.replace(/-{2,}/, "-")
.replace(/^-/, "")
.replace(/-$/, "");
} catch (/** @type {any} */ error) {
console.log(`Slugify ERROR: ${error.message}`);
return "";
}
};