UNPKG

1.14 kBJavaScriptView Raw
1'use strict';
2
3const _ = require('lodash');
4const atRuleParamIndex = require('../../utils/atRuleParamIndex');
5const report = require('../../utils/report');
6const ruleMessages = require('../../utils/ruleMessages');
7const validateOptions = require('../../utils/validateOptions');
8
9const ruleName = 'keyframes-name-pattern';
10
11const messages = ruleMessages(ruleName, {
12 expected: (keyframeName) => `Expected keyframe name "${keyframeName}" to match specified pattern`,
13});
14
15function rule(pattern) {
16 return (root, result) => {
17 const validOptions = validateOptions(result, ruleName, {
18 actual: pattern,
19 possible: [_.isRegExp, _.isString],
20 });
21
22 if (!validOptions) {
23 return;
24 }
25
26 const regex = _.isString(pattern) ? new RegExp(pattern) : pattern;
27
28 root.walkAtRules(/keyframes/i, (keyframesNode) => {
29 const value = keyframesNode.params;
30
31 if (regex.test(value)) {
32 return;
33 }
34
35 report({
36 index: atRuleParamIndex(keyframesNode),
37 message: messages.expected(value),
38 node: keyframesNode,
39 ruleName,
40 result,
41 });
42 });
43 };
44}
45
46rule.ruleName = ruleName;
47rule.messages = messages;
48module.exports = rule;