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",
"nanoids",
"nextjs",
"parameterizes",
"presigner",
"Provia",
"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) =>
string
.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();