From: Eduardo San Martin Morote Date: Thu, 3 Aug 2023 08:32:04 +0000 (+0200) Subject: docs: better slugify X-Git-Tag: v4.2.5~17 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=86e9d40383a8a0ead3a866d2dae8c25015686b3f;p=thirdparty%2Fvuejs%2Frouter.git docs: better slugify --- diff --git a/packages/docs/.vitepress/config/shared.ts b/packages/docs/.vitepress/config/shared.ts index cf84a4f6..80849394 100644 --- a/packages/docs/.vitepress/config/shared.ts +++ b/packages/docs/.vitepress/config/shared.ts @@ -10,6 +10,25 @@ if (process.env.NETLIFY) { console.log('Netlify build', process.env.CONTEXT) } +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') + const productionHead: HeadConfig[] = [ [ 'script', @@ -37,7 +56,7 @@ export const sharedConfig = defineConfig({ }, anchor: { - slugify: s => s.replace(/\s/g, '-'), + slugify, }, },