eslint-plugin-unicorn
Version:
More than 100 powerful ESLint rules
33 lines (27 loc) • 899 B
JavaScript
import {getParenthesizedRange} from '../utils/parentheses.js';
const isProblematicToken = ({type, value}) => (
(type === 'Keyword' && /^[a-z]*$/.test(value))
// ForOfStatement
|| (type === 'Identifier' && value === 'of')
// AwaitExpression
|| (type === 'Identifier' && value === 'await')
);
export default function * fixSpaceAroundKeyword(fixer, node, sourceCode) {
const range = getParenthesizedRange(node, sourceCode);
const tokenBefore = sourceCode.getTokenBefore({range}, {includeComments: true});
if (
tokenBefore
&& range[0] === tokenBefore.range[1]
&& isProblematicToken(tokenBefore)
) {
yield fixer.insertTextAfter(tokenBefore, ' ');
}
const tokenAfter = sourceCode.getTokenAfter({range}, {includeComments: true});
if (
tokenAfter
&& range[1] === tokenAfter.range[0]
&& isProblematicToken(tokenAfter)
) {
yield fixer.insertTextBefore(tokenAfter, ' ');
}
}