You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
61 lines
1.8 KiB
61 lines
1.8 KiB
|
2 years ago
|
"use strict";
|
||
|
|
|
||
|
|
Object.defineProperty(exports, "__esModule", {
|
||
|
|
value: true
|
||
|
|
});
|
||
|
|
exports.groupByKeyValue = groupByKeyValue;
|
||
|
|
exports.mapToKeyValue = mapToKeyValue;
|
||
|
|
exports.parseFunctionArguments = parseFunctionArguments;
|
||
|
|
var _postcssValueParser = _interopRequireDefault(require("postcss-value-parser"));
|
||
|
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
||
|
|
function groupByKeyValue(nodes) {
|
||
|
|
if (!nodes) {
|
||
|
|
return [];
|
||
|
|
}
|
||
|
|
var groupIndex = 0;
|
||
|
|
return nodes.reduce(function (acc, node, nodeIndex) {
|
||
|
|
var isComma = node.type === "div" && node.value === ",";
|
||
|
|
var skipTrailingComma = isComma && nodeIndex === nodes.length - 1;
|
||
|
|
if (skipTrailingComma) {
|
||
|
|
return acc;
|
||
|
|
}
|
||
|
|
if (isComma) {
|
||
|
|
groupIndex++;
|
||
|
|
}
|
||
|
|
acc[groupIndex] = acc[groupIndex] || [];
|
||
|
|
if (!isComma) {
|
||
|
|
acc[groupIndex].push(node);
|
||
|
|
}
|
||
|
|
return acc;
|
||
|
|
}, []);
|
||
|
|
}
|
||
|
|
function mapToKeyValue(nodes) {
|
||
|
|
var keyVal = nodes.reduce(function (acc, curr, i) {
|
||
|
|
if (acc.length === 1) {
|
||
|
|
return acc;
|
||
|
|
}
|
||
|
|
var nextNode = nodes[i + 1];
|
||
|
|
var isNextNodeColon = nextNode && nextNode.type === "div" && nextNode.value === ":";
|
||
|
|
if (isNextNodeColon) {
|
||
|
|
acc.push({
|
||
|
|
key: _postcssValueParser["default"].stringify(nodes[i]),
|
||
|
|
value: _postcssValueParser["default"].stringify(nodes.slice(2))
|
||
|
|
});
|
||
|
|
return acc;
|
||
|
|
}
|
||
|
|
acc.push({
|
||
|
|
value: _postcssValueParser["default"].stringify(nodes)
|
||
|
|
});
|
||
|
|
return acc;
|
||
|
|
}, []);
|
||
|
|
return keyVal[0];
|
||
|
|
}
|
||
|
|
function parseFunctionArguments(value) {
|
||
|
|
var parsed = (0, _postcssValueParser["default"])(value);
|
||
|
|
if (!parsed.nodes[0] || parsed.nodes[0].type !== "function") {
|
||
|
|
return [];
|
||
|
|
}
|
||
|
|
return parsed.nodes.map(function (node) {
|
||
|
|
return groupByKeyValue(node.nodes).map(mapToKeyValue);
|
||
|
|
})[0];
|
||
|
|
}
|