3 var _tk = require('rocambole-token');
4 var _ws = require('rocambole-whitespace');
6 var expressionParentheses = require('./expressionParentheses');
9 exports.format = function ReturnStatement(node) {
10 // need to make sure we only remove line breaks inside the node itself
11 // because of ASI (see #29)
12 var nonEmpty = _tk.findInBetween(node.startToken.next, node.endToken, _tk.isNotEmpty);
13 // XXX: we want to remove line breaks and white spaces inside the node, not
14 // using _br.limitAfter to avoid changing the program behavior (ASI)
15 if (nonEmpty) _tk.removeEmptyInBetween(node.startToken, nonEmpty);
17 _ws.limitAfter(node.startToken, 1);
18 if (_tk.isSemiColon(node.endToken)) {
19 // XXX: we want semicolon to be on same line and no whitespaces for now.
20 _tk.removeEmptyInBetween(_tk.findPrevNonEmpty(node.endToken), node.endToken);
24 expressionParentheses.addSpaceInside(node.argument);
29 var _specialArguments = {
30 'BinaryExpression': true
34 exports.getIndentEdges = function(node, opts) {
35 // we bypass indentation if argument already adds indentation
37 (opts[node.argument.type] && !_specialArguments[node.argument.type])) {
41 var parentheses = expressionParentheses.getParentheses(node.argument);
44 startToken: parentheses.opening,
45 endToken: parentheses.closing
48 startToken: node.startToken.next,
49 endToken: node.endToken