UNPKG

1.22 kBJavaScriptView Raw
1// @ts-nocheck
2
3'use strict';
4
5const isStandardSyntaxAtRule = require('../../utils/isStandardSyntaxAtRule');
6const report = require('../../utils/report');
7const ruleMessages = require('../../utils/ruleMessages');
8const validateOptions = require('../../utils/validateOptions');
9
10const ruleName = 'at-rule-name-case';
11
12const messages = ruleMessages(ruleName, {
13 expected: (actual, expected) => `Expected "${actual}" to be "${expected}"`,
14});
15
16function rule(expectation, options, context) {
17 return (root, result) => {
18 const validOptions = validateOptions(result, ruleName, {
19 actual: expectation,
20 possible: ['lower', 'upper'],
21 });
22
23 if (!validOptions) {
24 return;
25 }
26
27 root.walkAtRules((atRule) => {
28 if (!isStandardSyntaxAtRule(atRule)) {
29 return;
30 }
31
32 const name = atRule.name;
33
34 const expectedName = expectation === 'lower' ? name.toLowerCase() : name.toUpperCase();
35
36 if (name === expectedName) {
37 return;
38 }
39
40 if (context.fix) {
41 atRule.name = expectedName;
42
43 return;
44 }
45
46 report({
47 message: messages.expected(name, expectedName),
48 node: atRule,
49 ruleName,
50 result,
51 });
52 });
53 };
54}
55
56rule.ruleName = ruleName;
57rule.messages = messages;
58module.exports = rule;