UNPKG

1.46 kBJavaScriptView Raw
1// @ts-nocheck
2
3'use strict';
4
5const fixer = require('../functionCommaSpaceFix');
6const functionCommaSpaceChecker = require('../functionCommaSpaceChecker');
7const ruleMessages = require('../../utils/ruleMessages');
8const validateOptions = require('../../utils/validateOptions');
9const whitespaceChecker = require('../../utils/whitespaceChecker');
10
11const ruleName = 'function-comma-newline-before';
12
13const messages = ruleMessages(ruleName, {
14 expectedBefore: () => 'Expected newline before ","',
15 expectedBeforeMultiLine: () => 'Expected newline before "," in a multi-line function',
16 rejectedBeforeMultiLine: () => 'Unexpected whitespace before "," in a multi-line function',
17});
18
19function rule(expectation, options, context) {
20 const checker = whitespaceChecker('newline', expectation, messages);
21
22 return (root, result) => {
23 const validOptions = validateOptions(result, ruleName, {
24 actual: expectation,
25 possible: ['always', 'always-multi-line', 'never-multi-line'],
26 });
27
28 if (!validOptions) {
29 return;
30 }
31
32 functionCommaSpaceChecker({
33 root,
34 result,
35 locationChecker: checker.beforeAllowingIndentation,
36 checkedRuleName: ruleName,
37 fix: context.fix
38 ? (div, index, nodes) => {
39 return fixer({
40 div,
41 index,
42 nodes,
43 expectation,
44 position: 'before',
45 symb: context.newline,
46 });
47 }
48 : null,
49 });
50 };
51}
52
53rule.ruleName = ruleName;
54rule.messages = messages;
55module.exports = rule;