-
Notifications
You must be signed in to change notification settings - Fork 91
/
UnaryExpression.js
40 lines (36 loc) · 1.28 KB
/
UnaryExpression.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
"use strict";
var _br = require('rocambole-linebreak');
var _tk = require('rocambole-token');
var _ws = require('rocambole-whitespace');
exports.format = function UnaryExpression(node) {
if (node.operator === 'delete') {
_ws.limitAfter(node.startToken, 1);
_br.limitBefore(node.startToken, 'DeleteOperator');
var endToken = node.endToken;
if (_tk.isWs(endToken.next)) {
_ws.limitAfter(endToken, 0);
}
if (_tk.isSemiColon(endToken.next)) {
endToken = endToken.next;
}
_br.limitAfter(endToken, 'DeleteOperator');
} else if (node.operator === 'typeof' || node.operator === 'void') {
_ws.limitAfter(node.startToken, 1);
} else {
// multiple consecutive operators like `!!foo` should not have spaces in
// between then (we consider whole block as a single operator)
var operator = node.startToken;
var prev = _tk.findPrev(operator, _tk.isNotEmpty);
if (prev && prev.value === operator.value) {
_ws.limitBefore(operator, 0);
} else {
_ws.limitBefore(operator, 'UnaryExpressionOperator');
}
var next = _tk.findNext(operator, _tk.isNotEmpty);
if (next && next.value === operator.value) {
_ws.limitAfter(operator, 0);
} else {
_ws.limitAfter(operator, 'UnaryExpressionOperator');
}
}
};