UNPKG

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