node/tools/eslint/lib/rules/no-multiple-empty-lines.js
Yosuke Furukawa f9dd34d301 tools: replace closure-linter with eslint
PR-URL: https://github.com/iojs/io.js/pull/1539
Fixes: https://github.com/iojs/io.js/issues/1253
Reviewed-By: Jeremiah Senkpiel <fishrock123@rocketmail.com>
Reviewed-By: Trevor Norris <trev.norris@gmail.com>
Reviewed-By: Roman Reiss <me@silverwind.io>
Reviewed-By: Chris Dickinson <christopher.s.dickinson@gmail.com>
Reviewed-By: Johan Bergström <bugs@bergstroem.nu>
Reviewed-By: Fedor Indutny <fedor.indutny@gmail.com>
2015-05-09 12:09:52 +09:00

61 lines
1.9 KiB
JavaScript

/**
* @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);
}
};
};