Improve tag punctuation handling

This commit is contained in:
Sam Becker 2023-12-11 20:36:01 -06:00
parent 22ecb16804
commit b83c20ac3d
3 changed files with 16 additions and 1 deletions

View File

@ -18,6 +18,7 @@
"Makernote", "Makernote",
"nanoids", "nanoids",
"nextjs", "nextjs",
"parameterizes",
"presigner", "presigner",
"Provia", "Provia",
"qaub", "qaub",

11
__tests__/string.test.ts Normal file
View File

@ -0,0 +1,11 @@
import { parameterize } from '@/utility/string';
describe('String', () => {
it('parameterizes', () => {
expect(parameterize('my tag')).toBe('my-tag');
expect(parameterize('My Tag')).toBe('my-tag');
expect(parameterize('my_tag')).toBe('my-tag');
expect(parameterize('person\'s tag')).toBe('persons-tag');
expect(parameterize('"person\'s tag"')).toBe('persons-tag');
});
});

View File

@ -19,5 +19,8 @@ export const capitalizeWords = (string = '') =>
export const parameterize = (string: string) => export const parameterize = (string: string) =>
string string
.trim() .trim()
.replaceAll(/\s+/g, '-') // Replaces spaces, underscores, and dashes with dashes
.replaceAll(/[\s_—]/gi, '-')
// Removes all non-alphanumeric characters
.replaceAll(/([^a-z0-9-])/gi, '')
.toLowerCase(); .toLowerCase();