3 var _tk = require('rocambole-token');
4 var _limit = require('../limit');
7 exports.format = function ArrayExpression(node) {
8 if (node.elements.length) {
9 _limit.around(node.startToken, 'ArrayExpressionOpening');
10 _limit.around(node.endToken, 'ArrayExpressionClosing');
12 node.elements.forEach(function(el) {
13 // sparse arrays have `null` elements
16 var prev = _tk.findPrevNonEmpty(el.startToken);
17 if (prev.value === ',') {
18 _limit.around(prev, 'ArrayExpressionComma');
22 // empty array should be single line
23 _limit.after(node.startToken, 0);
28 exports.getIndentEdges = function(node) {
30 var prev = node.startToken;
32 // this will grab the start of first element that is on a new line
33 node.elements.some(function(el, i, els) {
34 // sparse arrays have `null` elements! which is very weird
36 var prevEl = els[i - 1];
37 prev = prevEl ? prevEl.endToken : _tk.findNextNonEmpty(prev);
39 var next = el ? el.startToken : _tk.findNextNonEmpty(prev);
41 if (_tk.findInBetween(prev, next, _tk.isBr)) {
47 var end = node.endToken.prev;
49 // if it ends on same line as previous non-empty we need to change the indent
50 // rule to make sure {}, [] and () are aligned
51 var sibling = _tk.findPrevNonEmpty(node.endToken);
52 if (!_tk.findInBetween(sibling, node.endToken, _tk.isBr)) {