Skip to content

Commit accfe69

Browse files
committed
incorrectly expand nesting rules #38
1 parent 75cbc4e commit accfe69

File tree

5 files changed

+38
-16
lines changed

5 files changed

+38
-16
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
# Changelog
22

3+
## V0.5.4
4+
5+
- [x] incorrectly expand css nesting rules
6+
37
## V0.5.3
48

59
- [x] incorrectly expand css nesting rules

dist/index-umd-web.js

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7201,11 +7201,17 @@
72017201
const rule = ast.chi[i];
72027202
if (!rule.sel.includes('&')) {
72037203
const selRule = splitRule(rule.sel);
7204-
selRule.forEach(arr => combinators.includes(arr[0].charAt(0)) ? arr.unshift(ast.sel) : arr.unshift(ast.sel, ' '));
7205-
rule.sel = selRule.reduce((acc, curr) => {
7206-
acc.push(curr.join(''));
7207-
return acc;
7208-
}, []).join(',');
7204+
if (selRule.length > 1) {
7205+
const r = ':is(' + selRule.map(a => a.join('')).join(',') + ')';
7206+
rule.sel = splitRule(ast.sel).reduce((a, b) => a.concat([b.join('') + r]), []).join(',');
7207+
}
7208+
else {
7209+
selRule.forEach(arr => combinators.includes(arr[0].charAt(0)) ? arr.unshift(ast.sel) : arr.unshift(ast.sel, ' '));
7210+
rule.sel = selRule.reduce((acc, curr) => {
7211+
acc.push(curr.join(''));
7212+
return acc;
7213+
}, []).join(',');
7214+
}
72097215
}
72107216
else {
72117217
rule.sel = replaceCompound(rule.sel, ast.sel);

dist/index.cjs

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7199,11 +7199,17 @@ function expandRule(node) {
71997199
const rule = ast.chi[i];
72007200
if (!rule.sel.includes('&')) {
72017201
const selRule = splitRule(rule.sel);
7202-
selRule.forEach(arr => combinators.includes(arr[0].charAt(0)) ? arr.unshift(ast.sel) : arr.unshift(ast.sel, ' '));
7203-
rule.sel = selRule.reduce((acc, curr) => {
7204-
acc.push(curr.join(''));
7205-
return acc;
7206-
}, []).join(',');
7202+
if (selRule.length > 1) {
7203+
const r = ':is(' + selRule.map(a => a.join('')).join(',') + ')';
7204+
rule.sel = splitRule(ast.sel).reduce((a, b) => a.concat([b.join('') + r]), []).join(',');
7205+
}
7206+
else {
7207+
selRule.forEach(arr => combinators.includes(arr[0].charAt(0)) ? arr.unshift(ast.sel) : arr.unshift(ast.sel, ' '));
7208+
rule.sel = selRule.reduce((acc, curr) => {
7209+
acc.push(curr.join(''));
7210+
return acc;
7211+
}, []).join(',');
7212+
}
72077213
}
72087214
else {
72097215
rule.sel = replaceCompound(rule.sel, ast.sel);

dist/lib/ast/expand.js

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -58,11 +58,17 @@ function expandRule(node) {
5858
const rule = ast.chi[i];
5959
if (!rule.sel.includes('&')) {
6060
const selRule = splitRule(rule.sel);
61-
selRule.forEach(arr => combinators.includes(arr[0].charAt(0)) ? arr.unshift(ast.sel) : arr.unshift(ast.sel, ' '));
62-
rule.sel = selRule.reduce((acc, curr) => {
63-
acc.push(curr.join(''));
64-
return acc;
65-
}, []).join(',');
61+
if (selRule.length > 1) {
62+
const r = ':is(' + selRule.map(a => a.join('')).join(',') + ')';
63+
rule.sel = splitRule(ast.sel).reduce((a, b) => a.concat([b.join('') + r]), []).join(',');
64+
}
65+
else {
66+
selRule.forEach(arr => combinators.includes(arr[0].charAt(0)) ? arr.unshift(ast.sel) : arr.unshift(ast.sel, ' '));
67+
rule.sel = selRule.reduce((acc, curr) => {
68+
acc.push(curr.join(''));
69+
return acc;
70+
}, []).join(',');
71+
}
6672
}
6773
else {
6874
rule.sel = replaceCompound(rule.sel, ast.sel);

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "@tbela99/css-parser",
33
"description": "CSS parser for node and the browser",
4-
"version": "0.5.3",
4+
"version": "0.5.4",
55
"exports": {
66
".": "./dist/node/index.js",
77
"./umd": "./dist/index-umd-web.js",

0 commit comments

Comments
 (0)