blob: 9cfea63daab2fc45d3a77ca3c957833e5f74ffa0 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
/**
* @fileoverview Disallows multiple blank lines.
* implementation adapted from the no-trailing-spaces rule.
* @author Greg Cochard
* @copyright 2014 Greg Cochard. All rights reserved.
*/
"use strict";
//------------------------------------------------------------------------------
// Rule Definition
//------------------------------------------------------------------------------
module.exports = function(context) {
// Use options.max or 2 as default
var numLines = 2;
if (context.options.length) {
numLines = context.options[0].max;
}
//--------------------------------------------------------------------------
// Public
//--------------------------------------------------------------------------
return {
"Program": function checkBlankLines(node) {
var lines = context.getSourceLines(),
currentLocation = -1,
lastLocation,
blankCounter = 0,
location,
trimmedLines = lines.map(function(str) {
return str.trim();
});
// Aggregate and count blank lines
do {
lastLocation = currentLocation;
currentLocation = trimmedLines.indexOf("", currentLocation + 1);
if (lastLocation === currentLocation - 1) {
blankCounter++;
} else {
if (blankCounter >= numLines) {
location = {
line: lastLocation + 1,
column: lines[lastLocation].length
};
context.report(node, location, "Multiple blank lines not allowed.");
}
// Finally, reset the blank counter
blankCounter = 0;
}
} while (currentLocation !== -1);
}
};
};
|