Skip to content

Commit

Permalink
use getslug
Browse files Browse the repository at this point in the history
  • Loading branch information
thisisamir98 committed Feb 8, 2023
1 parent 1495f6e commit ccc090f
Show file tree
Hide file tree
Showing 2 changed files with 89 additions and 13 deletions.
54 changes: 45 additions & 9 deletions src/script/util/StringUtil.ts
Original file line number Diff line number Diff line change
Expand Up @@ -163,18 +163,54 @@ export const fixWebsocketString = (originalString: string): string => {
};

const accentsMap: Record<string, string> = {
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});
48 changes: 44 additions & 4 deletions test/unit_tests/util/StringUtilSpec.js
Original file line number Diff line number Diff line change
Expand Up @@ -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');
});
});
});

0 comments on commit ccc090f

Please sign in to comment.