23 lines
766 B
JavaScript
23 lines
766 B
JavaScript
/**
|
|
* URL-/Dateiname-taugliches Kuerzel aus beliebigem Text: klein geschrieben, deutsche
|
|
* Umlaute ausgeschrieben (ä→ae, ö→oe, ü→ue, ß→ss), Akzente entfernt, Apostrophe entfernt,
|
|
* alles ausser a-z/0-9/- wird zu einem einzelnen '-', Rand-Bindestriche entfernt, auf
|
|
* 100 Zeichen gekuerzt. Kein Text (z. B. null/undefined) ergibt ''.
|
|
*/
|
|
export function slugify(value) {
|
|
const input = value === null || value === undefined ? '' : String(value)
|
|
|
|
return input
|
|
.toLowerCase()
|
|
.replace(/ä/g, 'ae')
|
|
.replace(/ö/g, 'oe')
|
|
.replace(/ü/g, 'ue')
|
|
.replace(/ß/g, 'ss')
|
|
.normalize('NFD')
|
|
.replace(/\p{M}/gu, '')
|
|
.replace(/['’‘`]/g, '')
|
|
.replace(/[^a-z0-9-]+/g, '-')
|
|
.replace(/^-+|-+$/g, '')
|
|
.slice(0, 100)
|
|
}
|