Skip to content

Commit aae90ed

Browse files
committed
chore(share): keep diacritics in slug instead of stripping them in
1 parent 0fa1c0f commit aae90ed

File tree

2 files changed

+6
-6
lines changed

2 files changed

+6
-6
lines changed

apps/server/src/services/utils.spec.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -704,9 +704,10 @@ describe("#slugify", () => {
704704
expect(result).toBe(expectedSlug);
705705
});
706706

707-
it("removes diacritic marks from characters", () => {
707+
// preserves diacritic marks
708+
it("preserves diacritic marks", () => {
708709
const testString = "Café naïve façade jalapeño";
709-
const expectedSlug = "cafe-naive-facade-jalapeno";
710+
const expectedSlug = "café-naïve-façade-jalapeño";
710711
const result = utils.slugify(testString);
711712
expect(result).toBe(expectedSlug);
712713
});

apps/server/src/services/utils.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -499,11 +499,10 @@ export function formatSize(size: number | null | undefined) {
499499

500500
function slugify(text: string) {
501501
return text
502-
.normalize("NFKD") // decompose accents
503-
.replace(/\p{Mark}/gu, "") // remove diacritics cleanly
502+
.normalize("NFC") // keep composed form, preserves accents
504503
.toLowerCase()
505-
.replace(/[^\p{Letter}\p{Number}]+/gu, "-") // keep Unicode letters/numbers
506-
.replace(/(^-|-$)+/g, ""); // trim leading/trailing dashes
504+
.replace(/[^\p{Letter}\p{Number}]+/gu, "-") // replace non-letter/number with "-"
505+
.replace(/(^-|-$)+/g, ""); // trim dashes
507506
}
508507

509508
export default {

0 commit comments

Comments
 (0)