28 lines
730 B
JavaScript
28 lines
730 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]/g, "-")
|
|
.replace(/-{2,}/g, "-")
|
|
.replace(/^-/, "")
|
|
.replace(/-$/, "");
|
|
} catch (/** @type {any} */ error) {
|
|
console.log(`Slugify ERROR: ${error.message}`);
|
|
return "";
|
|
}
|
|
};
|