diff --git a/src/script/util/StringUtil.ts b/src/script/util/StringUtil.ts index d81867425eb..a51542c64b0 100644 --- a/src/script/util/StringUtil.ts +++ b/src/script/util/StringUtil.ts @@ -163,18 +163,54 @@ export const fixWebsocketString = (originalString: string): string => { }; const accentsMap: Record = { - a: 'ä|á|à|ã|â|À|Á|Ã|Â', - e: 'ë|é|è|ê|É|È|Ê', - i: 'ï|í|ì|î|Í|Ì|Î', - o: 'ö|ó|ò|ô|õ|Ó|Ò|Ô|Õ', - u: 'ú|ù|û|ü|Ú|Ù|Û|Ü', - c: 'ç|Ç', - n: 'ñ|Ñ', + ä: 'a', + á: 'a', + à: 'a', + ã: 'a', + â: 'a', + À: 'a', + Á: 'a', + Ã: 'a', + Â: 'a', + ë: 'e', + é: 'e', + è: 'e', + ê: 'e', + É: 'e', + È: 'e', + Ê: 'e', + ï: 'i', + í: 'i', + ì: 'i', + î: 'i', + Í: 'i', + Ì: 'i', + Î: 'i', + ö: 'o', + ó: 'o', + ò: 'o', + ô: 'o', + õ: 'o', + Ó: 'o', + Ò: 'o', + Ô: 'o', + Õ: 'o', + ú: 'u', + ù: 'u', + û: 'u', + ü: 'u', + Ú: 'u', + Ù: 'u', + Û: 'u', + Ü: 'u', + ç: 'c', + Ç: 'c', + ñ: 'n', + Ñ: 'n', }; /** * @param text The string to replace accents its charachters * @returns new string with replaced accents charachters */ -export const replaceAccents = (text: string) => - Object.keys(accentsMap).reduce((acc, cur) => acc.replace(new RegExp(accentsMap[cur], 'g'), cur), text); +export const replaceAccents = (text: string) => getSlug(text, {custom: accentsMap, uric: true}); diff --git a/test/unit_tests/util/StringUtilSpec.js b/test/unit_tests/util/StringUtilSpec.js index 62fc7f8c408..11a4e8ebea2 100644 --- a/test/unit_tests/util/StringUtilSpec.js +++ b/test/unit_tests/util/StringUtilSpec.js @@ -213,10 +213,50 @@ describe('StringUtil', () => { describe('replaceAccents', () => { it('converts strings with accents values to pure strings with replaced accents values', () => { - const stringValue = 'müge'; - const expectedResult = 'muge'; - - const resultValue = replaceAccents(stringValue); + expect(replaceAccents('täst')).toEqual('tast'); + expect(replaceAccents('tást')).toEqual('tast'); + expect(replaceAccents('tàst')).toEqual('tast'); + expect(replaceAccents('tãst')).toEqual('tast'); + expect(replaceAccents('tâst')).toEqual('tast'); + expect(replaceAccents('tÀst')).toEqual('tast'); + expect(replaceAccents('tÁst')).toEqual('tast'); + expect(replaceAccents('tÃst')).toEqual('tast'); + expect(replaceAccents('tÂst')).toEqual('tast'); + expect(replaceAccents('tëst')).toEqual('test'); + expect(replaceAccents('tést')).toEqual('test'); + expect(replaceAccents('tèst')).toEqual('test'); + expect(replaceAccents('têst')).toEqual('test'); + expect(replaceAccents('tÉst')).toEqual('test'); + expect(replaceAccents('tÈst')).toEqual('test'); + expect(replaceAccents('tÊst')).toEqual('test'); + expect(replaceAccents('tïst')).toEqual('tist'); + expect(replaceAccents('tíst')).toEqual('tist'); + expect(replaceAccents('tìst')).toEqual('tist'); + expect(replaceAccents('tîst')).toEqual('tist'); + expect(replaceAccents('tÍst')).toEqual('tist'); + expect(replaceAccents('tÌst')).toEqual('tist'); + expect(replaceAccents('tÎst')).toEqual('tist'); + expect(replaceAccents('töst')).toEqual('tost'); + expect(replaceAccents('tóst')).toEqual('tost'); + expect(replaceAccents('tòst')).toEqual('tost'); + expect(replaceAccents('tôst')).toEqual('tost'); + expect(replaceAccents('tõst')).toEqual('tost'); + expect(replaceAccents('tÓst')).toEqual('tost'); + expect(replaceAccents('tÒst')).toEqual('tost'); + expect(replaceAccents('tÔst')).toEqual('tost'); + expect(replaceAccents('tÕst')).toEqual('tost'); + expect(replaceAccents('túst')).toEqual('tust'); + expect(replaceAccents('tùst')).toEqual('tust'); + expect(replaceAccents('tûst')).toEqual('tust'); + expect(replaceAccents('tüst')).toEqual('tust'); + expect(replaceAccents('tÚst')).toEqual('tust'); + expect(replaceAccents('tÙst')).toEqual('tust'); + expect(replaceAccents('tÛst')).toEqual('tust'); + expect(replaceAccents('tÜst')).toEqual('tust'); + expect(replaceAccents('tçst')).toEqual('tcst'); + expect(replaceAccents('tÇst')).toEqual('tcst'); + expect(replaceAccents('tñst')).toEqual('tnst'); + expect(replaceAccents('tÑst')).toEqual('tnst'); }); }); });