Merge pull request #694 from tailwindcss/update-selector-parser

Leverage built-in escape handling in postcss-selector-parser
This commit is contained in:
Adam Wathan 2019-02-28 08:48:07 -05:00 • committed by GitHub
commit 1d685a0557
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 26 additions and 22 deletions

View file

@ -44,7 +44,6 @@
"autoprefixer": "^9.4.5",
"bytes": "^3.0.0",
"chalk": "^2.4.1",
"css.escape": "^1.5.1",
"fs-extra": "^4.0.2",
"lodash": "^4.17.11",
"node-emoji": "^1.8.1",
@ -54,7 +53,7 @@
"postcss-functions": "^3.0.0",
"postcss-js": "^2.0.0",
"postcss-nested": "^4.1.1",
"postcss-selector-parser": "^5.0.0",
"postcss-selector-parser": "^6.0.0",
"pretty-hrtime": "^1.0.3",
"strip-comments": "^1.0.2"
},

View file

@ -1,7 +1,5 @@
import escapeClassName from './escapeClassName'
import parser from 'postcss-selector-parser'
import tap from 'lodash/tap'
import get from 'lodash/get'
export default function buildSelectorVariant(selector, variantName, separator, onError = () => {}) {
return parser(selectors => {
@ -11,12 +9,7 @@ export default function buildSelectorVariant(selector, variantName, separator, o
return
}
const baseClass = get(classSelector, 'raws.value', classSelector.value)
classSelector.setPropertyAndEscape(
'value',
`${variantName}${escapeClassName(separator)}${baseClass}`
)
classSelector.value = `${variantName}${separator}${classSelector.value}`
})
}).processSync(selector)
}

View file

@ -1,5 +1,8 @@
import escape from 'css.escape'
import parser from 'postcss-selector-parser'
import get from 'lodash/get'
export default function escapeClassName(className) {
return escape(className)
const node = parser.className()
node.value = className
return get(node, 'raws.value', node.value)
}

View file

@ -1,14 +1,14 @@
import parser from 'postcss-selector-parser'
import get from 'lodash/get'
import tap from 'lodash/tap'
export default function(prefix, selector) {
const getPrefix = typeof prefix === 'function' ? prefix : () => prefix
return parser(selectors => {
selectors.walkClasses(classSelector => {
const baseClass = get(classSelector, 'raws.value', classSelector.value)
classSelector.setPropertyAndEscape('value', `${getPrefix('.' + baseClass)}${baseClass}`)
tap(classSelector.value, baseClass => {
classSelector.value = `${getPrefix('.' + baseClass)}${baseClass}`
})
})
}).processSync(selector)
}

View file

@ -1481,16 +1481,16 @@ cross-spawn@^5.0.1, cross-spawn@^5.1.0:
shebang-command "^1.2.0"
which "^1.2.9"
css.escape@^1.5.1:
version "1.5.1"
resolved "https://registry.yarnpkg.com/css.escape/-/css.escape-1.5.1.tgz#42e27d4fa04ae32f931a4b4d4191fa9cddee97cb"
integrity sha1-QuJ9T6BK4y+TGktNQZH6nN3ul8s=
cssesc@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-2.0.0.tgz#3b13bd1bb1cb36e1bcb5a4dcd27f54c5dcb35703"
integrity sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==
cssesc@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee"
integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==
cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0":
version "0.3.2"
resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.2.tgz#b8036170c79f07a90ff2f16e22284027a243848b"
@ -4031,7 +4031,7 @@ postcss-scss@^0.3.0:
dependencies:
postcss "^5.2.4"
postcss-selector-parser@^5.0.0, postcss-selector-parser@^5.0.0-rc.4:
postcss-selector-parser@^5.0.0-rc.4:
version "5.0.0"
resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz#249044356697b33b64f1a8f7c80922dddee7195c"
integrity sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==
@ -4040,6 +4040,15 @@ postcss-selector-parser@^5.0.0, postcss-selector-parser@^5.0.0-rc.4:
indexes-of "^1.0.1"
uniq "^1.0.1"
postcss-selector-parser@^6.0.0:
version "6.0.0"
resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.0.tgz#5cf920dae70589adf1aba7ec72e39cc882e5cf40"
integrity sha512-E4EHwWgh5NIh/F44hYfQHR1jwejCza1ktpeWTetDtc71hxdDmWPjfSs28/58DBDIKxz5Dxlw8oW6am2ph/OCkg==
dependencies:
cssesc "^3.0.0"
indexes-of "^1.0.1"
uniq "^1.0.1"
postcss-value-parser@^3.3.0:
version "3.3.0"
resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz#87f38f9f18f774a4ab4c8a232f5c5ce8872a9d15"