aboutsummaryrefslogtreecommitdiffstats
path: root/vanilla/node_modules/cssstyle/lib/utils/propertyDescriptors.js
diff options
context:
space:
mode:
authorAdam Mathes <adam@adammathes.com>2026-02-13 21:34:48 -0800
committerAdam Mathes <adam@adammathes.com>2026-02-13 21:34:48 -0800
commit76cb9c2a39d477a64824a985ade40507e3bbade1 (patch)
tree41e997aa9c6f538d3a136af61dae9424db2005a9 /vanilla/node_modules/cssstyle/lib/utils/propertyDescriptors.js
parent819a39a21ac992b1393244a4c283bbb125208c69 (diff)
downloadneko-76cb9c2a39d477a64824a985ade40507e3bbade1.tar.gz
neko-76cb9c2a39d477a64824a985ade40507e3bbade1.tar.bz2
neko-76cb9c2a39d477a64824a985ade40507e3bbade1.zip
feat(vanilla): add testing infrastructure and tests (NK-wjnczv)
Diffstat (limited to 'vanilla/node_modules/cssstyle/lib/utils/propertyDescriptors.js')
-rw-r--r--vanilla/node_modules/cssstyle/lib/utils/propertyDescriptors.js55
1 files changed, 55 insertions, 0 deletions
diff --git a/vanilla/node_modules/cssstyle/lib/utils/propertyDescriptors.js b/vanilla/node_modules/cssstyle/lib/utils/propertyDescriptors.js
new file mode 100644
index 0000000..f568d84
--- /dev/null
+++ b/vanilla/node_modules/cssstyle/lib/utils/propertyDescriptors.js
@@ -0,0 +1,55 @@
+"use strict";
+
+const parsers = require("../parsers");
+
+const { AST_TYPES } = parsers;
+
+const getPropertyDescriptor = (property) => ({
+ set(v) {
+ const value = parsers.prepareValue(v);
+ if (parsers.hasVarFunc(value)) {
+ this._setProperty(property, value);
+ } else {
+ const parsedValue = parsers.parsePropertyValue(property, v, {
+ globalObject: this._global,
+ inArray: true
+ });
+ if (Array.isArray(parsedValue)) {
+ if (parsedValue.length === 1) {
+ const [{ name, type, value: itemValue }] = parsedValue;
+ switch (type) {
+ case AST_TYPES.CALC: {
+ this._setProperty(property, `${name}(${itemValue})`);
+ break;
+ }
+ case AST_TYPES.GLOBAL_KEYWORD:
+ case AST_TYPES.IDENTIFIER: {
+ // Set the normalized name for keywords or identifiers.
+ this._setProperty(property, name);
+ break;
+ }
+ default: {
+ // Set the prepared value for Dimension, Function, etc.
+ this._setProperty(property, value);
+ }
+ }
+ } else {
+ // Set the prepared value for lists containing multiple values.
+ this._setProperty(property, value);
+ }
+ } else if (typeof parsedValue === "string") {
+ // Empty string.
+ this._setProperty(property, parsedValue);
+ }
+ }
+ },
+ get() {
+ return this.getPropertyValue(property);
+ },
+ enumerable: true,
+ configurable: true
+});
+
+module.exports = {
+ getPropertyDescriptor
+};