Sha256: 29d3c2c3edf2d62f08393f064c00dc24f6bf20b9d0710f65cf525ffdf18bb911

Contents?: true

Size: 1.84 KB

Versions: 24

Compression:

Stored size: 1.84 KB

Contents

let stylelint = require('stylelint');
let _ = require('lodash');

module.exports = function checkOrder(firstNodeData, secondNodeData, allNodesData, sharedInfo) {
	let firstNodeIsSpecified = Boolean(firstNodeData.expectedPosition);
	let secondNodeIsSpecified = Boolean(secondNodeData.expectedPosition);

	// If both nodes have their position
	if (firstNodeIsSpecified && secondNodeIsSpecified) {
		return firstNodeData.expectedPosition <= secondNodeData.expectedPosition;
	}

	if (!firstNodeIsSpecified && secondNodeIsSpecified) {
		// If first node is unspecified, look for a specified node before it
		// to compare to the current node
		let priorSpecifiedNodeData = _.findLast(allNodesData.slice(0, -1), d =>
			Boolean(d.expectedPosition)
		);

		if (
			priorSpecifiedNodeData &&
			priorSpecifiedNodeData.expectedPosition &&
			priorSpecifiedNodeData.expectedPosition > secondNodeData.expectedPosition
		) {
			if (sharedInfo.isFixEnabled) {
				sharedInfo.shouldFix = true;

				// Don't go further, fix will be applied
				return;
			}

			stylelint.utils.report({
				message: sharedInfo.messages.expected(
					secondNodeData.description,
					priorSpecifiedNodeData.description
				),
				node: secondNodeData.node,
				result: sharedInfo.result,
				ruleName: sharedInfo.ruleName,
			});

			return true; // avoid logging another warning
		}
	}

	if (!firstNodeIsSpecified && !secondNodeIsSpecified) {
		return true;
	}

	let { unspecified } = sharedInfo;

	if (unspecified === 'ignore' && (!firstNodeIsSpecified || !secondNodeIsSpecified)) {
		return true;
	}

	if (unspecified === 'top' && !firstNodeIsSpecified) {
		return true;
	}

	if (unspecified === 'top' && !secondNodeIsSpecified) {
		return false;
	}

	if (unspecified === 'bottom' && !secondNodeIsSpecified) {
		return true;
	}

	if (unspecified === 'bottom' && !firstNodeIsSpecified) {
		return false;
	}
};

Version data entries

24 entries across 24 versions & 1 rubygems

Version Path
trusty-cms-6.3.1 node_modules/stylelint-order/rules/order/checkOrder.js
trusty-cms-5.0.7 node_modules/stylelint-order/rules/order/checkOrder.js
trusty-cms-5.0.6 node_modules/stylelint-order/rules/order/checkOrder.js
trusty-cms-5.0.5 node_modules/stylelint-order/rules/order/checkOrder.js
trusty-cms-5.0.4 node_modules/stylelint-order/rules/order/checkOrder.js
trusty-cms-5.0.3 node_modules/stylelint-order/rules/order/checkOrder.js
trusty-cms-5.0.2 node_modules/stylelint-order/rules/order/checkOrder.js
trusty-cms-5.0.1 node_modules/stylelint-order/rules/order/checkOrder.js
trusty-cms-4.3.5 node_modules/stylelint-order/rules/order/checkOrder.js
trusty-cms-5.0.0 node_modules/stylelint-order/rules/order/checkOrder.js
trusty-cms-4.3.4 node_modules/stylelint-order/rules/order/checkOrder.js
trusty-cms-4.3.3 node_modules/stylelint-order/rules/order/checkOrder.js
trusty-cms-4.3.2 node_modules/stylelint-order/rules/order/checkOrder.js
trusty-cms-4.3.1 node_modules/stylelint-order/rules/order/checkOrder.js
trusty-cms-4.3 node_modules/stylelint-order/rules/order/checkOrder.js
trusty-cms-4.2.3 node_modules/stylelint-order/rules/order/checkOrder.js
trusty-cms-4.2.2 node_modules/stylelint-order/rules/order/checkOrder.js
trusty-cms-4.2.1 node_modules/stylelint-order/rules/order/checkOrder.js
trusty-cms-4.2 node_modules/stylelint-order/rules/order/checkOrder.js
trusty-cms-4.1.9 node_modules/stylelint-order/rules/order/checkOrder.js