Skip to content

Commit 775fc30

Browse files
authored
Merge pull request tailwindlabs#483 from tailwindcss/fix-480
Use more robust existing library for escaping class names instead of homegrown regex
2 parents 9b9d8f3 + 1de2a24 commit 775fc30

File tree

5 files changed

+30
-1
lines changed

5 files changed

+30
-1
lines changed

__tests__/applyAtRule.test.js

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,23 @@ test("it copies a class's declarations into itself", () => {
1414
})
1515
})
1616

17+
test('selectors with invalid characters do not need to be manually escaped', () => {
18+
const input = `
19+
.a\\:1\\/2 { color: red; }
20+
.b { @apply .a:1/2; }
21+
`
22+
23+
const expected = `
24+
.a\\:1\\/2 { color: red; }
25+
.b { color: red; }
26+
`
27+
28+
return run(input).then(result => {
29+
expect(result.css).toEqual(expected)
30+
expect(result.warnings().length).toBe(0)
31+
})
32+
})
33+
1734
test('it removes important from applied classes by default', () => {
1835
const input = `
1936
.a { color: red !important; }

__tests__/escapeClassName.test.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
import escapeClassName from '../src/util/escapeClassName'
2+
3+
test('invalid characters are escaped', () => {
4+
expect(escapeClassName('w:_$-1/2')).toEqual('w\\:_\\$-1\\/2')
5+
})

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343
},
4444
"dependencies": {
4545
"commander": "^2.11.0",
46+
"css.escape": "^1.5.1",
4647
"fs-extra": "^4.0.2",
4748
"lodash": "^4.17.5",
4849
"perfectionist": "^2.4.0",

src/util/escapeClassName.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import escape from 'css.escape'
2+
13
export default function escapeClassName(className) {
2-
return className.replace(/([^A-Za-z0-9\-])/g, '\\$1')
4+
return escape(className)
35
}

yarn.lock

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1246,6 +1246,10 @@ cross-spawn@^5.0.1, cross-spawn@^5.1.0:
12461246
shebang-command "^1.2.0"
12471247
which "^1.2.9"
12481248

1249+
css.escape@^1.5.1:
1250+
version "1.5.1"
1251+
resolved "https://registry.yarnpkg.com/css.escape/-/css.escape-1.5.1.tgz#42e27d4fa04ae32f931a4b4d4191fa9cddee97cb"
1252+
12491253
cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0":
12501254
version "0.3.2"
12511255
resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.2.tgz#b8036170c79f07a90ff2f16e22284027a243848b"

0 commit comments

Comments
 (0)