eslint-plugin-putout
Version:
ESLint plugin for 🐊Putout
52 lines (37 loc) • 969 B
JavaScript
;
const {types} = require('putout');
const {
isBlockStatement,
isIfStatement,
isExpressionStatement,
} = types;
const reg = /\)\n(\s+)?\n/;
module.exports.report = () => `Remove useless newline`;
module.exports.fix = ({text}) => {
return text.replace(reg, ')\n');
};
module.exports.include = () => [
'IfStatement',
'ForOfStatement',
'ForStatement',
'WhileStatement',
];
module.exports.filter = ({text, node}) => {
if (isIf(text, node))
return true;
return isBody(text, node);
};
function isIf(text, node) {
if (!isIfStatement(node))
return false;
const {consequent, alternate} = node;
if (!isExpressionStatement(alternate) && !isExpressionStatement(consequent))
return false;
return reg.test(text);
}
function isBody(text, node) {
const {body} = node;
if (isBlockStatement(body))
return false;
return reg.test(text);
}