Sha256: 42eb8da516497d63ace34d7a407c3b26674c3c2c882e81c36cc6886b67bc34af

Contents?: true

Size: 1.18 KB

Versions: 45

Compression:

Stored size: 1.18 KB

Contents

'use strict';

var helpers = require('../helpers');

module.exports = {
  'name': 'extends-before-mixins',
  'defaults': {},
  'detect': function (ast, parser) {
    var result = [];

    ast.traverseByType('block', function (block) {
      var lastMixin = null;

      block.forEach(function (item, j) {
        if (item.is('include') || item.is('extend')) {
          if (item.contains('atkeyword')) {
            var atkeyword = item.first('atkeyword');

            if (atkeyword.contains('ident')) {
              var ident = atkeyword.first('ident');

              if (ident.content === 'extend') {
                if (j > lastMixin && lastMixin !== null) {
                  result = helpers.addUnique(result, {
                    'ruleId': parser.rule.name,
                    'line': item.start.line,
                    'column': item.start.column,
                    'message': 'Extends should come before mixins',
                    'severity': parser.severity
                  });
                }
              }
            }
          }
        }

        if (item.is('include')) {
          lastMixin = j;
        }
      });

      lastMixin = null;
    });

    return result;
  }
};

Version data entries

45 entries across 45 versions & 2 rubygems

Version Path
govuk_publishing_components-18.0.0 node_modules/sass-lint/lib/rules/extends-before-mixins.js
govuk_publishing_components-17.21.0 node_modules/sass-lint/lib/rules/extends-before-mixins.js
govuk_publishing_components-17.20.0 node_modules/sass-lint/lib/rules/extends-before-mixins.js
govuk_publishing_components-17.19.1 node_modules/sass-lint/lib/rules/extends-before-mixins.js
govuk_publishing_components-17.19.0 node_modules/sass-lint/lib/rules/extends-before-mixins.js
govuk_publishing_components-17.18.0 node_modules/sass-lint/lib/rules/extends-before-mixins.js
govuk_publishing_components-17.17.0 node_modules/sass-lint/lib/rules/extends-before-mixins.js
govuk_publishing_components-17.16.0 node_modules/sass-lint/lib/rules/extends-before-mixins.js
govuk_publishing_components-17.15.0 node_modules/sass-lint/lib/rules/extends-before-mixins.js
govuk_publishing_components-17.14.0 node_modules/sass-lint/lib/rules/extends-before-mixins.js
govuk_publishing_components-17.13.0 node_modules/sass-lint/lib/rules/extends-before-mixins.js
govuk_publishing_components-17.12.2 node_modules/sass-lint/lib/rules/extends-before-mixins.js
govuk_publishing_components-17.12.1 node_modules/sass-lint/lib/rules/extends-before-mixins.js
govuk_publishing_components-17.12.0 node_modules/sass-lint/lib/rules/extends-before-mixins.js
govuk_publishing_components-17.11.0 node_modules/sass-lint/lib/rules/extends-before-mixins.js
govuk_publishing_components-17.10.0 node_modules/sass-lint/lib/rules/extends-before-mixins.js
govuk_publishing_components-17.9.0 node_modules/sass-lint/lib/rules/extends-before-mixins.js
govuk_publishing_components-17.8.0 node_modules/sass-lint/lib/rules/extends-before-mixins.js
govuk_publishing_components-17.7.0 node_modules/sass-lint/lib/rules/extends-before-mixins.js
govuk_publishing_components-17.6.1 node_modules/sass-lint/lib/rules/extends-before-mixins.js