manifold/common/util/slugify.ts
2022-01-10 17:52:03 -06:00

17 lines
558 B
TypeScript

export const slugify = (
text: string,
separator = '-',
maxLength = 35
): string => {
return text
.toString()
.normalize('NFD') // split an accented letter in the base letter and the acent
.replace(/[\u0300-\u036f]/g, '') // remove all previously split accents
.toLowerCase()
.trim()
.replace(/[^a-z0-9 ]/g, '') // remove all chars not letters, numbers and spaces (to be replaced)
.replace(/\s+/g, separator)
.substring(0, maxLength)
.replace(new RegExp(separator + '+$', 'g'), '') // remove terminal separators
}