3 const _ = require("lodash");
4 const isCustomProperty = require("../../utils/isCustomProperty");
5 const report = require("../../utils/report");
6 const ruleMessages = require("../../utils/ruleMessages");
7 const validateOptions = require("../../utils/validateOptions");
9 const ruleName = "custom-property-pattern";
11 const messages = ruleMessages(ruleName, {
12 expected: "Expected custom property name to match specified pattern"
15 const rule = function(pattern) {
16 return (root, result) => {
17 const validOptions = validateOptions(result, ruleName, {
19 possible: [_.isRegExp, _.isString]
25 const regexpPattern = _.isString(pattern) ? new RegExp(pattern) : pattern;
27 root.walkDecls(decl => {
28 const prop = decl.prop;
30 if (!isCustomProperty(prop)) {
33 if (regexpPattern.test(prop.slice(2))) {
38 message: messages.expected,
47 rule.ruleName = ruleName;
48 rule.messages = messages;
49 module.exports = rule;