UNPKG

1.38 kBJavaScriptView Raw
1// @ts-nocheck
2
3'use strict';
4
5const ruleMessages = require('../../utils/ruleMessages');
6const selectorCombinatorSpaceChecker = require('../selectorCombinatorSpaceChecker');
7const validateOptions = require('../../utils/validateOptions');
8const whitespaceChecker = require('../../utils/whitespaceChecker');
9
10const ruleName = 'selector-combinator-space-after';
11
12const messages = ruleMessages(ruleName, {
13 expectedAfter: (combinator) => `Expected single space after "${combinator}"`,
14 rejectedAfter: (combinator) => `Unexpected whitespace after "${combinator}"`,
15});
16
17function rule(expectation, options, context) {
18 const checker = whitespaceChecker('space', expectation, messages);
19
20 return (root, result) => {
21 const validOptions = validateOptions(result, ruleName, {
22 actual: expectation,
23 possible: ['always', 'never'],
24 });
25
26 if (!validOptions) {
27 return;
28 }
29
30 selectorCombinatorSpaceChecker({
31 root,
32 result,
33 locationChecker: checker.after,
34 locationType: 'after',
35 checkedRuleName: ruleName,
36 fix: context.fix
37 ? (combinator) => {
38 if (expectation === 'always') {
39 combinator.spaces.after = ' ';
40
41 return true;
42 }
43
44 if (expectation === 'never') {
45 combinator.spaces.after = '';
46
47 return true;
48 }
49 }
50 : null,
51 });
52 };
53}
54
55rule.ruleName = ruleName;
56rule.messages = messages;
57module.exports = rule;