f89a6ac893d26472340b8ca747663a27ca7fac7b
[platform/framework/web/crosswalk-tizen.git] /
1 'use strict';
2
3 var tk = require('rocambole-token');
4 var limit = require('../limit');
5 var _params = require('./Params');
6
7 exports.format = function ArrowFunctionExpression(node) {
8   var body = node.body;
9   if (body.type === 'BlockStatement') {
10     limit.around(body.startToken, 'ArrowFunctionExpressionOpeningBrace');
11     limit.around(body.endToken, 'ArrowFunctionExpressionClosingBrace');
12   }
13
14   var arrow = tk.findPrev(body.startToken, '=>');
15   limit.around(arrow, 'ArrowFunctionExpressionArrow');
16
17   // make sure we handle `(x) => x` and `x => x`
18   if (shouldHandleParams(node)) {
19     _params.format(node);
20   }
21 };
22
23 exports.getIndentEdges = function(node, opts) {
24   var edges = [
25     node.body
26   ];
27   if (shouldHandleParams(node)) {
28     edges.push(_params.getIndentEdges(node, opts));
29   }
30   return edges;
31 };
32
33 function shouldHandleParams(node) {
34   var arrow = tk.findPrev(node.body.startToken, '=>');
35   // we don't check based on `node.params` because of `node.defaults`
36   return tk.findPrevNonEmpty(arrow).value === ')';
37 }