in packages/posthtml-transform/lib/utils.js [68:102]
function normalizeRules(rules, options = {}) {
let normalized = null;
// Parse query string to rules
if (typeof rules === 'string') {
// Append ? to the beginning so parseQuery able to parse
const query = rules.substr(0, 1) !== '?' ? `?${rules}` : rules;
const parsedQuery = parseQuery(query);
normalized = Object.keys(parsedQuery).reduce((rules, attr) => {
const value = parsedQuery[attr];
rules.push(new Rule({ attr, value }));
return rules;
}, []);
} else if (Array.isArray(rules)) {
normalized = cloneDeep(rules).map(r => new Rule(r));
} else {
throw new Error(`${packageName}: rules should be \`Array<Object>|string\``);
}
// Split rule with multiple value into several single valued rules
const replacements = normalized
.filter(rule => rule.isMultiple)
.map(rule => ({ rule, replaceTo: rule.splitByMultipleValue() }));
replacements.forEach(({ rule, replaceTo }) => {
normalized.splice(...[normalized.indexOf(rule), 1].concat(replaceTo));
});
if (options.convertAlphaColors) {
normalized = convertAlphaColorsRules(normalized);
}
return normalized;
}