UNPKG

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