2 * @fileoverview Rule to check empty newline after "var" statement
3 * @author Gopal Venkatesan
4 * @copyright 2015 Gopal Venkatesan. All rights reserved.
9 //------------------------------------------------------------------------------
11 //------------------------------------------------------------------------------
13 module.exports = function(context) {
14 var mode = context.options[0],
15 validator; // regex to validate the rule
17 if (mode === "never") {
18 validator = /\S(?:\r?\n)?\S/;
19 } else { // assume mode === "always"
20 validator = /\S(?:\r?\n){2,}\S?/;
25 "VariableDeclaration:exit": function(node) {
26 var lastToken = context.getLastToken(node),
27 nextToken = context.getTokenAfter(node),
28 // peek few characters beyond the last token (typically the semi-colon)
29 sourceLines = context.getSource(lastToken, 0, 3);
31 // Some coding styles like Google uses multiple `var` statements.
32 // So if the next token is a `var` statement don't do anything.
33 if (nextToken && nextToken.type === "Keyword" &&
34 (nextToken.value === "var" || nextToken.value === "let" || nextToken.value === "const")) {
38 // Next statement is not a `var`
39 if (sourceLines && !sourceLines.match(validator)) {
40 context.report(node, "Newline is " + mode + " expected after a \"var\" statement.",
41 { identifier: node.name });