var stylelint = require("stylelint") var primerUtilities = require("primer-utilities") var ruleName = "primer/selector-no-utility" var messages = stylelint.utils.ruleMessages(ruleName, { rejected: function(classname) { return "Avoid styling the utilty class `" + classname + "`" } }) module.exports = stylelint.createPlugin(ruleName, function(enabled) { return function(root, result) { var validOptions = stylelint.utils.validateOptions(result, ruleName, { actual: enabled, possible: [true, false] }) if (!validOptions) { return } var utilityClasses = primerUtilities.cssstats.selectors.values if (utilityClasses.length === 0) { return } root.walkRules(function(rule) { var ruleClasses = rule.selector.match(/\.[a-z\-_0-9]+/ig) if (ruleClasses != null) { for (var i = 0; i < ruleClasses.length; i++) { var ruleClass = ruleClasses[i] if (utilityClasses.indexOf(ruleClass) >= 0) { stylelint.utils.report({ message: messages.rejected(ruleClass), node: rule, result: result, ruleName: ruleName }) } } } }) } }) module.exports.ruleName = ruleName module.exports.messages = messages