3 const _ = require("lodash");
4 const atRuleParamIndex = require("../../utils/atRuleParamIndex");
5 const report = require("../../utils/report");
6 const ruleMessages = require("../../utils/ruleMessages");
7 const validateOptions = require("../../utils/validateOptions");
9 const ruleName = "custom-media-pattern";
11 const messages = ruleMessages(ruleName, {
12 expected: "Expected custom media query 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.walkAtRules(atRule => {
28 if (atRule.name.toLowerCase() !== "custom-media") {
32 const customMediaName = atRule.params.match(/^--(\S+)\b/)[1];
34 if (regexpPattern.test(customMediaName)) {
39 message: messages.expected,
41 index: atRuleParamIndex(atRule),
49 rule.ruleName = ruleName;
50 rule.messages = messages;
51 module.exports = rule;