UNPKG

1.39 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-before';
11
12const messages = ruleMessages(ruleName, {
13 expectedBefore: (combinator) => `Expected single space before "${combinator}"`,
14 rejectedBefore: (combinator) => `Unexpected whitespace before "${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.before,
34 locationType: 'before',
35 checkedRuleName: ruleName,
36 fix: context.fix
37 ? (combinator) => {
38 if (expectation === 'always') {
39 combinator.spaces.before = ' ';
40
41 return true;
42 }
43
44 if (expectation === 'never') {
45 combinator.spaces.before = '';
46
47 return true;
48 }
49 }
50 : null,
51 });
52 };
53}
54
55rule.ruleName = ruleName;
56rule.messages = messages;
57module.exports = rule;