69 lines
1.7 KiB
JavaScript
69 lines
1.7 KiB
JavaScript
|
const { isProperty } = require('../../utils');
|
||
|
const checkEmptyLineBefore = require('./checkEmptyLineBefore');
|
||
|
const checkEmptyLineBeforeFirstProp = require('./checkEmptyLineBeforeFirstProp');
|
||
|
const getNodeData = require('./getNodeData');
|
||
|
|
||
|
module.exports = function checkNodeForEmptyLines({
|
||
|
node,
|
||
|
context,
|
||
|
emptyLineBeforeUnspecified,
|
||
|
emptyLineMinimumPropertyThreshold,
|
||
|
expectedOrder,
|
||
|
isFixEnabled,
|
||
|
primaryOption,
|
||
|
result,
|
||
|
}) {
|
||
|
let lastKnownSeparatedGroup = 1;
|
||
|
|
||
|
let propsCount = node.nodes.filter((item) => isProperty(item)).length;
|
||
|
let allNodesData = node.nodes.map((child) => getNodeData(child, expectedOrder));
|
||
|
|
||
|
allNodesData.forEach(function checkEveryPropForEmptyLine(nodeData, index) {
|
||
|
let previousNodeData = allNodesData[index - 1];
|
||
|
|
||
|
// if previous node is shared-line comment, use second previous node
|
||
|
if (
|
||
|
previousNodeData &&
|
||
|
previousNodeData.node.type === 'comment' &&
|
||
|
!previousNodeData.node.raw('before').includes('\n')
|
||
|
) {
|
||
|
previousNodeData = allNodesData[index - 2];
|
||
|
}
|
||
|
|
||
|
// skip first decl
|
||
|
if (!previousNodeData) {
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
// Nodes should be standard declarations
|
||
|
if (!isProperty(previousNodeData.node) || !isProperty(nodeData.node)) {
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
checkEmptyLineBefore({
|
||
|
firstPropData: previousNodeData,
|
||
|
secondPropData: nodeData,
|
||
|
propsCount,
|
||
|
lastKnownSeparatedGroup,
|
||
|
context,
|
||
|
emptyLineBeforeUnspecified,
|
||
|
emptyLineMinimumPropertyThreshold,
|
||
|
isFixEnabled,
|
||
|
primaryOption,
|
||
|
result,
|
||
|
});
|
||
|
});
|
||
|
|
||
|
// Check if empty line before first prop should be removed
|
||
|
if (isProperty(allNodesData[0].node)) {
|
||
|
checkEmptyLineBeforeFirstProp({
|
||
|
propData: allNodesData[0],
|
||
|
primaryOption,
|
||
|
emptyLineBeforeUnspecified,
|
||
|
isFixEnabled,
|
||
|
context,
|
||
|
result,
|
||
|
});
|
||
|
}
|
||
|
};
|