Skip to content

Commit

Permalink
Eliminate lookbehind assertions in expand apply at rules
Browse files Browse the repository at this point in the history
  • Loading branch information
thecrypticace committed Apr 27, 2022
1 parent 5e2ea81 commit 2b3b6e3
Showing 1 changed file with 11 additions and 3 deletions.
14 changes: 11 additions & 3 deletions src/lib/expandApplyAtRules.js
Expand Up @@ -22,6 +22,15 @@ function extractClasses(node) {
return Array.from(classes)
}

let selectorExtractor = parser((root) => root.nodes.map((node) => node.toString()))

/**
* @param {string} ruleSelectors
*/
function extractSelectors(ruleSelectors) {
return selectorExtractor.transformSync(ruleSelectors)
}

function extractBaseCandidates(candidates, separator) {
let baseClasses = new Set()

Expand Down Expand Up @@ -283,10 +292,9 @@ function processApply(root, context, localCache) {
function replaceSelector(selector, utilitySelectors, candidate) {
let needle = `.${escapeClassName(candidate)}`
let needles = [...new Set([needle, needle.replace(/\\2c /g, '\\,')])]
let utilitySelectorsList = utilitySelectors.split(/\s*(?<!\\)\,(?![^(]*\))\s*/g)
let utilitySelectorsList = extractSelectors(utilitySelectors)

return selector
.split(/\s*(?<!\\)\,(?![^(]*\))\s*/g)
return extractSelectors(selector)
.map((s) => {
let replaced = []

Expand Down

0 comments on commit 2b3b6e3

Please sign in to comment.