From: Eduardo San Martin Morote Date: Thu, 3 Aug 2023 08:32:50 +0000 (+0200) Subject: docs: better slugify X-Git-Tag: @pinia/nuxt@0.5.0~41 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=f9b09e10ee82ac2e63872806980dd4cc8f51c889;p=thirdparty%2Fvuejs%2Fpinia.git docs: better slugify --- diff --git a/packages/docs/.vitepress/config/shared.ts b/packages/docs/.vitepress/config/shared.ts index 0127721b..53c162db 100644 --- a/packages/docs/.vitepress/config/shared.ts +++ b/packages/docs/.vitepress/config/shared.ts @@ -19,6 +19,25 @@ const productionHead: HeadConfig[] = [ ], ] +const rControl = /[\u0000-\u001f]/g +const rSpecial = /[\s~`!@#$%^&*()\-_+=[\]{}|\\;:"'“”‘’<>,.?/]+/g +const rCombining = /[\u0300-\u036F]/g + +/** + * Default slugification function + */ +export const slugify = (str: string): string => + str + .normalize('NFKD') + // Remove accents + .replace(rCombining, '') + // Remove control characters + .replace(rControl, '') + // Replace special characters + .replace(rSpecial, '-') + // ensure it doesn't start with a number + .replace(/^(\d)/, '_$1') + export const sharedConfig = defineConfig({ title: 'Pinia', appearance: 'dark', @@ -33,6 +52,10 @@ export const sharedConfig = defineConfig({ leftDelimiter: '%{', rightDelimiter: '}%', }, + + anchor: { + slugify, + }, }, head: [