Sha256: d93641f5ec5e55d3645be74f7879dc214c5b228dede5b89dc034686782d03809

Contents?: true

Size: 1.68 KB

Versions: 24

Compression:

Stored size: 1.68 KB

Contents

"use strict";

Object.defineProperty(exports, "__esModule", {
  value: true
});
exports["default"] = _default;
exports.messages = exports.ruleName = void 0;

var _stylelint = require("stylelint");

var _utils = require("../../utils");

var ruleName = (0, _utils.namespace)("selector-no-redundant-nesting-selector");
exports.ruleName = ruleName;

var messages = _stylelint.utils.ruleMessages(ruleName, {
  rejected: "Unnecessary nesting selector (&)"
});

exports.messages = messages;

function _default(actual) {
  return function (root, result) {
    var validOptions = _stylelint.utils.validateOptions(result, ruleName, {
      actual: actual
    });

    if (!validOptions) {
      return;
    }

    root.walkRules(/&/, function (rule) {
      (0, _utils.parseSelector)(rule.selector, result, rule, function (fullSelector) {
        // "Ampersand followed by a combinator followed by non-combinator non-ampersand and not the selector end"
        fullSelector.walkNesting(function (node) {
          var prev = node.prev();

          if (prev) {
            return;
          }

          var next = node.next();

          if (!next && node.parent.parent.nodes.length > 1) {
            return;
          }

          if (next && next.type !== "combinator") {
            return;
          }

          var nextNext = next ? next.next() : null;

          if (nextNext && (nextNext.type === "combinator" || nextNext.type === "nesting")) {
            return;
          }

          _stylelint.utils.report({
            ruleName: ruleName,
            result: result,
            node: rule,
            message: messages.rejected,
            index: node.sourceIndex
          });
        });
      });
    });
  };
}

Version data entries

24 entries across 24 versions & 1 rubygems

Version Path
trusty-cms-6.3.1 node_modules/stylelint-scss/dist/rules/selector-no-redundant-nesting-selector/index.js
trusty-cms-5.0.7 node_modules/stylelint-scss/dist/rules/selector-no-redundant-nesting-selector/index.js
trusty-cms-5.0.6 node_modules/stylelint-scss/dist/rules/selector-no-redundant-nesting-selector/index.js
trusty-cms-5.0.5 node_modules/stylelint-scss/dist/rules/selector-no-redundant-nesting-selector/index.js
trusty-cms-5.0.4 node_modules/stylelint-scss/dist/rules/selector-no-redundant-nesting-selector/index.js
trusty-cms-5.0.3 node_modules/stylelint-scss/dist/rules/selector-no-redundant-nesting-selector/index.js
trusty-cms-5.0.2 node_modules/stylelint-scss/dist/rules/selector-no-redundant-nesting-selector/index.js
trusty-cms-5.0.1 node_modules/stylelint-scss/dist/rules/selector-no-redundant-nesting-selector/index.js
trusty-cms-4.3.5 node_modules/stylelint-scss/dist/rules/selector-no-redundant-nesting-selector/index.js
trusty-cms-5.0.0 node_modules/stylelint-scss/dist/rules/selector-no-redundant-nesting-selector/index.js
trusty-cms-4.3.4 node_modules/stylelint-scss/dist/rules/selector-no-redundant-nesting-selector/index.js
trusty-cms-4.3.3 node_modules/stylelint-scss/dist/rules/selector-no-redundant-nesting-selector/index.js
trusty-cms-4.3.2 node_modules/stylelint-scss/dist/rules/selector-no-redundant-nesting-selector/index.js
trusty-cms-4.3.1 node_modules/stylelint-scss/dist/rules/selector-no-redundant-nesting-selector/index.js
trusty-cms-4.3 node_modules/stylelint-scss/dist/rules/selector-no-redundant-nesting-selector/index.js
trusty-cms-4.2.3 node_modules/stylelint-scss/dist/rules/selector-no-redundant-nesting-selector/index.js
trusty-cms-4.2.2 node_modules/stylelint-scss/dist/rules/selector-no-redundant-nesting-selector/index.js
trusty-cms-4.2.1 node_modules/stylelint-scss/dist/rules/selector-no-redundant-nesting-selector/index.js
trusty-cms-4.2 node_modules/stylelint-scss/dist/rules/selector-no-redundant-nesting-selector/index.js
trusty-cms-4.1.9 node_modules/stylelint-scss/dist/rules/selector-no-redundant-nesting-selector/index.js