lib/rules/indent.js
function checkIndentInFunctionBlock(node) {

		// Search first caller in chain.
		// Ex.:
		//
		// Models <- Identifier
		//   .User
		//   .find()
		//   .exec(function() {
		//   // function body
		// });
		//
		// Looks for 'Models'
		var calleeNode = node.parent; // FunctionExpression
		var indent;

		if (calleeNode.parent &&
			(calleeNode.parent.type === "Property" ||
			calleeNode.parent.type === "ArrayExpression")) {
			// If function is part of array or object, comma can be put at left
			indent = getNodeIndent(calleeNode, false, false);
		} else {
			// If function is standalone, simple calculate indent
			indent = getNodeIndent(calleeNode);
		}

		if (calleeNode.parent.type === "CallExpression") {
			var calleeParent = calleeNode.parent;

			if (calleeNode.type !== "FunctionExpression" && calleeNode.type !== "ArrowFunctionExpression") {
				if (calleeParent && calleeParent.loc.start.line < node.loc.start.line) {
					indent = getNodeIndent(calleeParent);
				}
			} else {
				if (isArgBeforeCalleeNodeMultiline(calleeNode) &&
					calleeParent.callee.loc.start.line === calleeParent.callee.loc.end.line && !isNodeFirstInLine(calleeNode)) {
					indent = getNodeIndent(calleeParent);
				}
			}
		}

		// function body indent should be indent + indent size
		indent += indentSize;

		// check if the node is inside a variable
		var parentVarNode = getVariableDeclaratorNode(node);
		if (parentVarNode && isNodeInVarOnTop(node, parentVarNode)) {
			indent += indentSize * options.VariableDeclarator[parentVarNode.parent.kind];
		}

		if (node.body.length > 0) {
			checkNodesIndent(node.body, indent);
		}

		checkLastNodeLineIndent(node, indent - indentSize);
	}
function checkIndentInFunctionBlock(node) {

		// Search first caller in chain.
		// Ex.:
		//
		// Models <- Identifier
		//   .User
		//   .find()
		//   .exec(function() {
		//   // function body
		// });
		//
		// Looks for 'Models'
		var calleeNode = node.parent; // FunctionExpression
		var indent;

		if (calleeNode.parent &&
			(calleeNode.parent.type === "Property" ||
			calleeNode.parent.type === "ArrayExpression")) {
			// If function is part of array or object, comma can be put at left
			indent = getNodeIndent(calleeNode, false, false);
		} else {
			// If function is standalone, simple calculate indent
			indent = getNodeIndent(calleeNode);
		}

		if (calleeNode.parent.type === "CallExpression") {
			var calleeParent = calleeNode.parent;

			if (calleeNode.type !== "FunctionExpression" && calleeNode.type !== "ArrowFunctionExpression") {
				if (calleeParent && calleeParent.loc.start.line < node.loc.start.line) {
					indent = getNodeIndent(calleeParent);
				}
			} else {
				if (isArgBeforeCalleeNodeMultiline(calleeNode) &&
					calleeParent.callee.loc.start.line === calleeParent.callee.loc.end.line && !isNodeFirstInLine(calleeNode)) {
					indent = getNodeIndent(calleeParent);
				}
			}
		}

		// function body indent should be indent + indent size
		indent += indentSize;

		// check if the node is inside a variable
		var parentVarNode = getVariableDeclaratorNode(node);
		if (parentVarNode && isNodeInVarOnTop(node, parentVarNode)) {
			indent += indentSize * options.VariableDeclarator[parentVarNode.parent.kind];
		}

		if (node.body.length > 0) {
			checkNodesIndent(node.body, indent);
		}

		checkLastNodeLineIndent(node, indent - indentSize);
	}
function checkIndentInFunctionBlock ( node ) { // Search first caller in chain. // Ex.: // // Models <- Identifier //   .User //   .find() //   .exec(function() { //   // function body // }); // // Looks for 'Models' var calleeNode = node . parent ; // FunctionExpression var indent ; if ( calleeNode . parent && ( calleeNode . parent . type === "Property" || calleeNode . parent . type === "ArrayExpression" ) ) { // If function is part of array or object, comma can be put at left indent = getNodeIndent ( calleeNode , false , false ) ; } else { // If function is standalone, simple calculate indent indent = getNodeIndent ( calleeNode ) ; } if ( calleeNode . parent . type === "CallExpression" ) { var calleeParent = calleeNode . parent ; if ( calleeNode . type !== "FunctionExpression" && calleeNode . type !== "ArrowFunctionExpression" ) { if ( calleeParent && calleeParent . loc . start . line < node . loc . start . line ) { indent = getNodeIndent ( calleeParent ) ; } } else { if ( isArgBeforeCalleeNodeMultiline ( calleeNode ) && calleeParent . callee . loc . start . line === calleeParent . callee . loc . end . line && ! isNodeFirstInLine ( calleeNode ) ) { indent = getNodeIndent ( calleeParent ) ; } } } // function body indent should be indent + indent size indent += indentSize ; // check if the node is inside a variable var parentVarNode = getVariableDeclaratorNode ( node ) ; if ( parentVarNode && isNodeInVarOnTop ( node , parentVarNode ) ) { indent += indentSize * options . VariableDeclarator [ parentVarNode . parent . kind ] ; } if ( node . body . length > 0 ) { checkNodesIndent ( node . body , indent ) ; } checkLastNodeLineIndent ( node , indent - indentSize ) ; }
Check indent for function block content
@param {ASTNode} node node to examine
@returns {void}
Check indent for function block content