Skip to content

Commit 80e5040

Browse files
authored
Add priority to createGenericPropertyDescriptor() (#308)
1 parent ff7a4d1 commit 80e5040

5 files changed

Lines changed: 86 additions & 85 deletions

File tree

lib/parsers.js

Lines changed: 9 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -297,48 +297,40 @@ function parsePropertyValue(prop, val, opt = {}) {
297297
break;
298298
}
299299
case AST_TYPES.FUNCTION: {
300-
const css = cssTree
301-
.generate(item)
302-
.replace(/\)(?!\)|\s|,)/g, ") ")
303-
.trim();
304-
const raw = itemCount === 1 ? val : css;
300+
const raw = itemCount === 1 ? val : cssTree.generate(item).replace(/\)(?!\)|\s|,)/g, ") ");
305301
// Remove "${name}(" from the start and ")" from the end
306-
const itemValue = raw.slice(name.length + 1, -1).trim();
302+
const itemValue = raw.trim().slice(name.length + 1, -1);
307303
if (name === "calc") {
308304
if (children.size === 1) {
309305
const child = children.first;
310306
if (child.type === AST_TYPES.NUMBER) {
311307
values.push({
312308
type: AST_TYPES.CALC,
313-
isNumber: true,
314-
value: `${parseFloat(child.value)}`,
315309
name,
316-
raw
310+
isNumber: true,
311+
value: `${parseFloat(child.value)}`
317312
});
318313
} else {
319314
values.push({
320315
type: AST_TYPES.CALC,
321-
isNumber: false,
322-
value: `${asciiLowercase(itemValue)}`,
323316
name,
324-
raw
317+
isNumber: false,
318+
value: asciiLowercase(itemValue)
325319
});
326320
}
327321
} else {
328322
values.push({
329323
type: AST_TYPES.CALC,
330-
isNumber: false,
331-
value: asciiLowercase(itemValue),
332324
name,
333-
raw
325+
isNumber: false,
326+
value: asciiLowercase(itemValue)
334327
});
335328
}
336329
} else {
337330
values.push({
338331
type,
339332
name,
340-
value: asciiLowercase(itemValue),
341-
raw
333+
value: caseSensitive ? itemValue : asciiLowercase(itemValue)
342334
});
343335
}
344336
break;

lib/utils/propertyDescriptors.js

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ function createGenericPropertyDescriptor(property, { caseSensitive, dimensionTyp
3030
const parsedValue = parsers.parsePropertyValue(property, v, {
3131
caseSensitive
3232
});
33+
const priority = this._priorities.get(property) ?? "";
3334
if (Array.isArray(parsedValue)) {
3435
if (parsedValue.length === 1) {
3536
const {
@@ -43,7 +44,7 @@ function createGenericPropertyDescriptor(property, { caseSensitive, dimensionTyp
4344
const [{ name, type, value: itemValue }] = parsedValue;
4445
switch (type) {
4546
case AST_TYPES.CALC: {
46-
this._setProperty(property, `${name}(${itemValue})`);
47+
this._setProperty(property, `${name}(${itemValue})`, priority);
4748
break;
4849
}
4950
case AST_TYPES.DIMENSION: {
@@ -58,11 +59,11 @@ function createGenericPropertyDescriptor(property, { caseSensitive, dimensionTyp
5859
} else {
5960
val = parsers.serializeDimension(parsedValue, dimensionType);
6061
}
61-
this._setProperty(property, val);
62+
this._setProperty(property, val, priority);
6263
break;
6364
}
6465
case AST_TYPES.HASH: {
65-
this._setProperty(property, parsers.serializeColor(parsedValue));
66+
this._setProperty(property, parsers.serializeColor(parsedValue), priority);
6667
break;
6768
}
6869
case AST_TYPES.NUMBER: {
@@ -76,12 +77,12 @@ function createGenericPropertyDescriptor(property, { caseSensitive, dimensionTyp
7677
} else if (percentageType) {
7778
val = parsers.serializePercentage(parsedValue, percentageType);
7879
}
79-
this._setProperty(property, val);
80+
this._setProperty(property, val, priority);
8081
break;
8182
}
8283
case AST_TYPES.GLOBAL_KEYWORD:
8384
case AST_TYPES.IDENTIFIER: {
84-
this._setProperty(property, name);
85+
this._setProperty(property, name, priority);
8586
break;
8687
}
8788
case AST_TYPES.PERCENTAGE: {
@@ -96,36 +97,35 @@ function createGenericPropertyDescriptor(property, { caseSensitive, dimensionTyp
9697
numericType = lengthType;
9798
}
9899
if (numericType) {
99-
this._setProperty(property, parsers.resolveNumericValue(parsedValue, numericType));
100+
this._setProperty(property, parsers.resolveNumericValue(parsedValue, numericType), priority);
100101
}
101102
break;
102103
}
103104
case AST_TYPES.STRING: {
104-
this._setProperty(property, parsers.serializeString(parsedValue));
105+
this._setProperty(property, parsers.serializeString(parsedValue), priority);
105106
break;
106107
}
107108
case AST_TYPES.URL: {
108-
this._setProperty(property, parsers.serializeURL(parsedValue));
109+
this._setProperty(property, parsers.serializeURL(parsedValue), priority);
109110
break;
110111
}
111112
case AST_TYPES.FUNCTION:
112113
default: {
113114
if (colorType) {
114-
this._setProperty(property, parsers.serializeColor(parsedValue));
115+
this._setProperty(property, parsers.serializeColor(parsedValue), priority);
115116
} else if (imageType) {
116-
this._setProperty(property, parsers.serializeGradient(parsedValue));
117+
this._setProperty(property, parsers.serializeGradient(parsedValue), priority);
117118
} else {
118-
this._setProperty(property, value);
119+
this._setProperty(property, value, priority);
119120
}
120121
}
121122
}
122123
} else {
123124
// Set the prepared value for lists containing multiple values.
124-
this._setProperty(property, value);
125+
this._setProperty(property, value, priority);
125126
}
126127
} else if (typeof parsedValue === "string") {
127-
// Empty string.
128-
this._setProperty(property, parsedValue);
128+
this._setProperty(property, parsedValue, priority);
129129
}
130130
}
131131
},

package-lock.json

Lines changed: 40 additions & 40 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,14 @@
1616
],
1717
"main": "./lib/index.js",
1818
"dependencies": {
19-
"@asamuzakjp/css-color": "^4.1.1",
19+
"@asamuzakjp/css-color": "^4.1.2",
2020
"@csstools/css-syntax-patches-for-csstree": "^1.0.26",
2121
"css-tree": "^3.1.0",
2222
"lru-cache": "^11.2.5"
2323
},
2424
"devDependencies": {
2525
"@domenic/eslint-config": "^4.1.0",
26-
"@webref/css": "^8.2.3",
26+
"@webref/css": "^8.2.4",
2727
"eslint": "^9.39.2",
2828
"eslint-config-prettier": "^10.1.8",
2929
"eslint-plugin-prettier": "^5.5.5",

0 commit comments

Comments
 (0)