From 530efa4f09c2798aa4997504961f5bd132dfe901 Mon Sep 17 00:00:00 2001 From: seb Date: Tue, 4 Aug 2026 01:29:12 +0200 Subject: [PATCH] slugify --- src/store/article/createUnderParent.js | 11 +---------- src/store/article/updateBySku.js | 11 +---------- src/store/category/createUnderParent.js | 11 +---------- src/store/category/rename.js | 11 +---------- src/store/slugify.js | 20 ++++++++++++++++++++ 5 files changed, 24 insertions(+), 40 deletions(-) create mode 100644 src/store/slugify.js diff --git a/src/store/article/createUnderParent.js b/src/store/article/createUnderParent.js index 1587517..a4bc01d 100644 --- a/src/store/article/createUnderParent.js +++ b/src/store/article/createUnderParent.js @@ -5,16 +5,7 @@ import resolveCategoryAccess from '../category/resolveCategoryAccess.js'; import ensureDefaultUnit from '../unit/ensureDefault.js'; import nextSku from '../numbers/nextSku.js'; import request from '../request.js'; - -function slugify(name) { - return name - .trim() - .toLowerCase() - .normalize('NFD') - .replace(/\p{M}/gu, '') - .replace(/[^a-z0-9]+/g, '-') - .replace(/^-+|-+$/g, ''); -} +import slugify from '../slugify.js'; export default function createUnderParent(pool) { const access = resolveCategoryAccess(pool); diff --git a/src/store/article/updateBySku.js b/src/store/article/updateBySku.js index 48470de..ecd3bd6 100644 --- a/src/store/article/updateBySku.js +++ b/src/store/article/updateBySku.js @@ -8,16 +8,7 @@ import { GET_BY_SI } from '../../sql/unit.js'; import request from '../request.js'; import queryBySku from './queryBySku.js'; import resolveArticleBySku from './resolveArticleBySku.js'; - -function slugify(name) { - return name - .trim() - .toLowerCase() - .normalize('NFD') - .replace(/\p{M}/gu, '') - .replace(/[^a-z0-9]+/g, '-') - .replace(/^-+|-+$/g, ''); -} +import slugify from '../slugify.js'; export default function updateBySku(pool) { const resolve = resolveArticleBySku(pool); diff --git a/src/store/category/createUnderParent.js b/src/store/category/createUnderParent.js index 7ea1bde..027b860 100644 --- a/src/store/category/createUnderParent.js +++ b/src/store/category/createUnderParent.js @@ -5,16 +5,7 @@ import { import { CREATE as CREATE_CATEGORYTEXT } from '../../sql/categorytext.js'; import resolveCategoryAccess from './resolveCategoryAccess.js'; import request from '../request.js'; - -function slugify(name) { - return name - .trim() - .toLowerCase() - .normalize('NFD') - .replace(/\p{M}/gu, '') - .replace(/[^a-z0-9]+/g, '-') - .replace(/^-+|-+$/g, ''); -} +import slugify from '../slugify.js'; export default function createUnderParent(pool) { const access = resolveCategoryAccess(pool); diff --git a/src/store/category/rename.js b/src/store/category/rename.js index 37c6ca9..a5b5f16 100644 --- a/src/store/category/rename.js +++ b/src/store/category/rename.js @@ -1,15 +1,6 @@ import { UPDATE_BY_CATEGORY_AND_LANGUAGE } from '../../sql/categorytext.js'; import resolveCategoryAccess from './resolveCategoryAccess.js'; - -function slugify(name) { - return name - .trim() - .toLowerCase() - .normalize('NFD') - .replace(/\p{M}/gu, '') - .replace(/[^a-z0-9]+/g, '-') - .replace(/^-+|-+$/g, ''); -} +import slugify from '../slugify.js'; export default function rename(pool) { const access = resolveCategoryAccess(pool); diff --git a/src/store/slugify.js b/src/store/slugify.js new file mode 100644 index 0000000..1e98a30 --- /dev/null +++ b/src/store/slugify.js @@ -0,0 +1,20 @@ +const UMLAUT_MAP = { + ä: 'ae', + ö: 'oe', + ü: 'ue', + ß: 'ss', +}; + +export default function slugify(name) { + return String(name) + .trim() + .toLowerCase() + .replace(/ä/g, 'ae') + .replace(/ö/g, 'oe') + .replace(/ü/g, 'ue') + .replace(/ß/g, 'ss') + .normalize('NFD') + .replace(/\p{M}/gu, '') + .replace(/[^a-z0-9]+/g, '-') + .replace(/^-+|-+$/g, ''); +}