| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- 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,
- });
- }
- };
|