UNPKG

stylelint-sustainable-css

Version:

Sustainable CSS is a Stylelint plugin dedicated to following sustainable web design principles.

51 lines (44 loc) 1.58 kB
const stylelint = require('stylelint'); const ruleName = 'sustainable-css/concatenate-property-values'; function concatenatePropertyValuesRule() { return (root, result) => { root.walkRules(rule => { const propertyValuesMap = new Map(); rule.walkDecls(decl => { if (propertyValuesMap.has(decl.prop)) { propertyValuesMap.get(decl.prop).push(decl); } else { propertyValuesMap.set(decl.prop, [decl]); } }); propertyValuesMap.forEach((decls, prop) => { if (decls.length > 1) { if (prop === 'filter') { const concatenatedValue = decls.map(decl => decl.value).join(' '); decls.forEach(decl => decl.remove()); stylelint.utils.report({ message: `Combine multiple "${prop}" values into one declaration`, node: rule, result, ruleName, severity: 'warning', }); rule.append({ prop, value: concatenatedValue }); } else { const combinedValue = decls.map(decl => decl.value).join(', '); decls.forEach(decl => decl.remove()); stylelint.utils.report({ message: `Combine multiple "${prop}" values into one declaration using commas`, node: rule, result, ruleName, severity: 'warning', }); rule.append({ prop, value: combinedValue }); } } }); }); }; } module.exports = concatenatePropertyValuesRule;