Sha256: 92b51710cb6b32b0ff2707cb98f72de12105a73012ebd6fed2b7a36b2ec71042

Contents?: true

Size: 1.6 KB

Versions: 24

Compression:

Stored size: 1.6 KB

Contents

const _ = require('lodash');
const getDescription = require('./getDescription');

module.exports = function createOrderInfo(input) {
	let order = {};
	let expectedPosition = 0;

	input.forEach(item => {
		expectedPosition += 1;

		// Convert 'rules' into extended pattern
		if (item === 'rules') {
			item = {
				type: 'rule',
			};
		}

		if (item.type === 'rule') {
			// It there are no nodes like that create array for them
			if (!order[item.type]) {
				order[item.type] = [];
			}

			let nodeData = {
				expectedPosition,
				description: getDescription(item),
			};

			if (item.selector) {
				nodeData.selector = item.selector;

				if (_.isString(item.selector)) {
					nodeData.selector = new RegExp(item.selector);
				}
			}

			order[item.type].push(nodeData);
		}

		// Convert 'at-rules' into extended pattern
		if (item === 'at-rules') {
			item = {
				type: 'at-rule',
			};
		}

		if (item.type === 'at-rule') {
			// It there are no nodes like that create array for them
			if (!order[item.type]) {
				order[item.type] = [];
			}

			let nodeData = {
				expectedPosition,
				description: getDescription(item),
			};

			if (item.name) {
				nodeData.name = item.name;
			}

			if (item.parameter) {
				nodeData.parameter = item.parameter;

				if (_.isString(item.parameter)) {
					nodeData.parameter = new RegExp(item.parameter);
				}
			}

			if (!_.isUndefined(item.hasBlock)) {
				nodeData.hasBlock = item.hasBlock;
			}

			order[item.type].push(nodeData);
		}

		if (_.isString(item)) {
			order[item] = {
				expectedPosition,
				description: getDescription(item),
			};
		}
	});

	return order;
};

Version data entries

24 entries across 24 versions & 1 rubygems

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