Sha256: fcce19facb3337d184e2f6dbe85df237c04f807acd0dab8a0c6cf45f1dde10c9

Contents?: true

Size: 1.27 KB

Versions: 45

Compression:

Stored size: 1.27 KB

Contents

'use strict';

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

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

    ast.traverseByType('block', function (block) {
      var lastDeclaration = 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 > lastDeclaration && lastDeclaration !== null) {
                  error = {
                    'ruleId': parser.rule.name,
                    'line': item.start.line,
                    'column': item.start.column,
                    'message': 'Extends should come before declarations',
                    'severity': parser.severity
                  };
                  result = helpers.addUnique(result, error);
                }
              }
            }
          }
        }

        if (item.is('declaration')) {
          lastDeclaration = j;
        }
      });
      lastDeclaration = 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-declarations.js
govuk_publishing_components-17.21.0 node_modules/sass-lint/lib/rules/extends-before-declarations.js
govuk_publishing_components-17.20.0 node_modules/sass-lint/lib/rules/extends-before-declarations.js
govuk_publishing_components-17.19.1 node_modules/sass-lint/lib/rules/extends-before-declarations.js
govuk_publishing_components-17.19.0 node_modules/sass-lint/lib/rules/extends-before-declarations.js
govuk_publishing_components-17.18.0 node_modules/sass-lint/lib/rules/extends-before-declarations.js
govuk_publishing_components-17.17.0 node_modules/sass-lint/lib/rules/extends-before-declarations.js
govuk_publishing_components-17.16.0 node_modules/sass-lint/lib/rules/extends-before-declarations.js
govuk_publishing_components-17.15.0 node_modules/sass-lint/lib/rules/extends-before-declarations.js
govuk_publishing_components-17.14.0 node_modules/sass-lint/lib/rules/extends-before-declarations.js
govuk_publishing_components-17.13.0 node_modules/sass-lint/lib/rules/extends-before-declarations.js
govuk_publishing_components-17.12.2 node_modules/sass-lint/lib/rules/extends-before-declarations.js
govuk_publishing_components-17.12.1 node_modules/sass-lint/lib/rules/extends-before-declarations.js
govuk_publishing_components-17.12.0 node_modules/sass-lint/lib/rules/extends-before-declarations.js
govuk_publishing_components-17.11.0 node_modules/sass-lint/lib/rules/extends-before-declarations.js
govuk_publishing_components-17.10.0 node_modules/sass-lint/lib/rules/extends-before-declarations.js
govuk_publishing_components-17.9.0 node_modules/sass-lint/lib/rules/extends-before-declarations.js
govuk_publishing_components-17.8.0 node_modules/sass-lint/lib/rules/extends-before-declarations.js
govuk_publishing_components-17.7.0 node_modules/sass-lint/lib/rules/extends-before-declarations.js
govuk_publishing_components-17.6.1 node_modules/sass-lint/lib/rules/extends-before-declarations.js