Skip to content

Commit d22441a

Browse files
committed
fix($shared-utils): replaced diacritics with String.normalize (fix vuejs#1815)
1 parent d809e9b commit d22441a

File tree

4 files changed

+28
-9
lines changed

4 files changed

+28
-9
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
import slugify from '../src/slugify'
2+
3+
describe('slugify', () => {
4+
test('should slugify', () => {
5+
const asserts: Record<string, string> = {
6+
'Привет': 'привет',
7+
'Лед üäöß': 'лед-uaoß',
8+
'Iлtèrnåtïonɑlíƶatï߀ԉ': 'iлternationɑliƶati߀ԉ',
9+
'Båcòл ípѕùm ðoɭ߀r ѕït aϻèt âùþê aԉᏧ߀üïlɭê ƃëéf culρá fïlèt ϻiǥnòn cuρiᏧatat ut êлim tòлɢùê.':
10+
'bacoл-ipѕum-ðoɭ߀r-ѕit-aϻet-auþe-aԉꮷ߀uilɭe-ƃeef-culρa-filet-ϻiǥnon-cuρiꮷatat-ut-eлim-toлɢue',
11+
'ᴎᴑᴅᴇȷʂ': 'ᴎᴑᴅᴇȷʂ',
12+
'hambúrguer': 'hamburguer',
13+
'hŒllœ': 'hœllœ',
14+
'Fußball': 'fußball',
15+
'ABCDEFGHIJKLMNOPQRSTUVWXYZé': 'abcdefghijklmnopqrstuvwxyze',
16+
}
17+
18+
Object.keys(asserts).forEach(input => {
19+
expect(slugify(input)).toBe(asserts[input])
20+
})
21+
})
22+
})

packages/@vuepress/shared-utils/package.json

-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@
2828
],
2929
"dependencies": {
3030
"chalk": "^2.3.2",
31-
"diacritics": "^1.3.0",
3231
"escape-html": "^1.0.3",
3332
"fs-extra": "^7.0.1",
3433
"globby": "^9.2.0",

packages/@vuepress/shared-utils/src/slugify.ts

+6-4
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,17 @@
11
// string.js slugify drops non ascii chars so we have to
22
// use a custom implementation here
3-
// @ts-ignore
4-
import { remove as removeDiacritics } from 'diacritics'
53

64
// eslint-disable-next-line no-control-regex
75
const rControl = /[\u0000-\u001f]/g
86
const rSpecial = /[\s~`!@#$%^&*()\-_+=[\]{}|\\;:"'<>,.?/]+/g
7+
const rCombining = /[\u0300-\u036F]/g;
98

109
export = function slugify (str: string): string {
11-
return removeDiacritics(str)
12-
// Remove control characters
10+
// Split accented characters into components
11+
return str.normalize('NFKD')
12+
// Remove accents
13+
.replace(rCombining, '')
14+
// Remove control characters
1315
.replace(rControl, '')
1416
// Replace special characters
1517
.replace(rSpecial, '-')

yarn.lock

-4
Original file line numberDiff line numberDiff line change
@@ -4174,10 +4174,6 @@ dezalgo@^1.0.0:
41744174
asap "^2.0.0"
41754175
wrappy "1"
41764176

4177-
diacritics@^1.3.0:
4178-
version "1.3.0"
4179-
resolved "https://registry.yarnpkg.com/diacritics/-/diacritics-1.3.0.tgz#3efa87323ebb863e6696cebb0082d48ff3d6f7a1"
4180-
41814177
didyoumean@^1.2.1:
41824178
version "1.2.1"
41834179
resolved "https://registry.yarnpkg.com/didyoumean/-/didyoumean-1.2.1.tgz#e92edfdada6537d484d73c0172fd1eba0c4976ff"

0 commit comments

Comments
 (0)