Skip to content

Commit 58a71b2

Browse files
committed
[new] - Implement UnaryExpression extractor.
Will need for props that look like {!foo}.
1 parent 21775be commit 58a71b2

File tree

2 files changed

+26
-1
lines changed

2 files changed

+26
-1
lines changed
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import getValue from './index';
2+
3+
const extract = value => {
4+
const { operator, argument } = value;
5+
6+
switch (operator) {
7+
case '-':
8+
return -getValue(argument);
9+
case '+':
10+
return Number(getValue(argument));
11+
case '!':
12+
return !getValue(argument);
13+
case '~':
14+
return ~getValue(argument);
15+
case 'typeof':
16+
case 'delete':
17+
case 'void':
18+
default:
19+
return undefined;
20+
}
21+
};
22+
23+
export default extract;

src/util/values/expressions/index.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import FunctionExpression from './FunctionExpression';
66
import LogicalExpression from './LogicalExpression';
77
import MemberExpression from './MemberExpression';
88
import CallExpression from './CallExpression';
9+
import UnaryExpression from './UnaryExpression';
910

1011
const TYPES = {
1112
Identifier,
@@ -15,7 +16,8 @@ const TYPES = {
1516
FunctionExpression,
1617
LogicalExpression,
1718
MemberExpression,
18-
CallExpression
19+
CallExpression,
20+
UnaryExpression
1921
};
2022

2123
const extract = value => {

0 commit comments

Comments
 (0)