Sha256: 875c79c89533078d098a492cc89d1736f5e068f1f61b4f47994676e0cc0e19b1

Contents?: true

Size: 1.77 KB

Versions: 23

Compression:

Stored size: 1.77 KB

Contents

'use strict';

const isStandardSyntaxRule = require('../utils/isStandardSyntaxRule');
const parseSelector = require('../utils/parseSelector');
const report = require('../utils/report');
const styleSearch = require('style-search');

module.exports = function (options) {
	options.root.walkRules((rule) => {
		if (!isStandardSyntaxRule(rule)) {
			return;
		}

		if (!rule.selector.includes('[') || !rule.selector.includes('=')) {
			return;
		}

		let hasFixed = false;
		const selector = rule.raws.selector ? rule.raws.selector.raw : rule.selector;

		const fixedSelector = parseSelector(selector, options.result, rule, (selectorTree) => {
			selectorTree.walkAttributes((attributeNode) => {
				const operator = attributeNode.operator;

				if (!operator) {
					return;
				}

				const attributeNodeString = attributeNode.toString();

				styleSearch({ source: attributeNodeString, target: operator }, (match) => {
					const index = options.checkBeforeOperator ? match.startIndex : match.endIndex - 1;

					checkOperator(attributeNodeString, index, rule, attributeNode, operator);
				});
			});
		});

		if (hasFixed) {
			if (!rule.raws.selector) {
				rule.selector = fixedSelector;
			} else {
				rule.raws.selector.raw = fixedSelector;
			}
		}

		function checkOperator(source, index, node, attributeNode, operator) {
			options.locationChecker({
				source,
				index,
				err: (m) => {
					if (options.fix && options.fix(attributeNode)) {
						hasFixed = true;

						return;
					}

					report({
						message: m.replace(
							options.checkBeforeOperator ? operator[0] : operator[operator.length - 1],
							operator,
						),
						node,
						index: attributeNode.sourceIndex + index,
						result: options.result,
						ruleName: options.checkedRuleName,
					});
				},
			});
		}
	});
};

Version data entries

23 entries across 23 versions & 1 rubygems

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