sass-lint
Version:
Sass linter. Compatible but different from scss-lint
74 lines (60 loc) • 1.76 kB
JavaScript
;
var helpers = require('../helpers');
var findNearestReturn = function (parent, i) {
var previous,
doublePrevious,
space;
if (i >= 2) {
doublePrevious = parent.content[i - 2];
if (doublePrevious.type.indexOf('Comment') !== -1) {
return findNearestReturn(parent, i - 1);
}
}
if (i >= 1) {
previous = parent.content[i - 1];
if (previous.type.indexOf('Comment') !== -1) {
return findNearestReturn(parent, i - 1);
}
if (previous.type === 'space') {
space = previous.content.indexOf('\n\n') >= 0;
return {
'space': space,
'previous': previous
};
}
}
};
module.exports = {
'name': 'empty-line-between-blocks',
'defaults': {
'include': true
},
'detect': function (ast, parser) {
var result = [];
ast.traverseByType('ruleset', function (ruleset, i, parent) {
var space;
if (parent.type === 'block') {
space = findNearestReturn(parent, i);
if (parser.options.include && !space.space) {
result = helpers.addUnique(result, {
'ruleId': parser.rule.name,
'line': space.previous.end.line,
'column': space.previous.end.column,
'message': 'Space expected between blocks',
'severity': parser.severity
});
}
else if (!parser.options.include && space.space) {
result = helpers.addUnique(result, {
'ruleId': parser.rule.name,
'line': space.previous.end.line,
'column': space.previous.end.column,
'message': 'Space not allowed between blocks',
'severity': parser.severity
});
}
}
});
return result;
}
};