b0f4662882b78bd8667030edc775a9fe665096f0
[platform/framework/web/crosswalk-tizen.git] /
1 "use strict";
2
3 var _ws = require('rocambole-whitespace');
4 var _br = require('rocambole-linebreak');
5 var _tk = require('rocambole-token');
6 var limit = require('../limit');
7
8
9 exports.format = function SwitchCase(node) {
10   if (node.test) {
11     // we want case to always be on the same line!
12     _br.limitBefore(node.test.startToken, 0);
13     _ws.limitBefore(node.test.startToken, 1);
14   }
15   var endToken = node.endToken;
16   if (endToken.value !== ':') {
17     // endToken might be ":" or "break" or ";"
18     var breakKeyword = _tk.findPrev(endToken.next, 'break');
19     if (breakKeyword) {
20       limit.before(breakKeyword, 'BreakKeyword');
21       limit.after(endToken, 'BreakKeyword');
22     }
23   }
24 };
25
26
27 exports.getIndentEdges = function(node) {
28   return {
29     startToken: node.startToken,
30     // we need to get the next token because `default` might end with a `}`
31     // (ie. IfStatement) we also need to search for next `case` or `}` or
32     // `break` or `default` to make sure comments are included inside the range
33     endToken: _tk.findNext(node.endToken, ['}', 'case', 'break', 'default']).prev
34   };
35 };