-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbabelNode.js
32 lines (30 loc) · 1.16 KB
/
babelNode.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
// TODO: isBlockComment, other babel-specific functions
// Extracts the name of a babel node object.
const nodeName
= node => {
switch (node.type) {
case 'Identifier':
return (node.name)
case 'MemberExpression':
return nodeName(node.object) + '.' + nodeName(node.property)
case 'AssignmentExpression':
return nodeName(node.left)
case 'ExpressionStatement':
return nodeName(node.expression)
case 'ExportDefaultDeclaration':
case 'ExportNamedDeclaration':
return nodeName(node.declaration)
case 'VariableDeclaration':
return nodeName(node.declarations[0]) // VariableDeclarator
case 'FunctionExpression':
case 'ClassExpression':
return node.id && node.id.name || '(anonymous)'
case 'VariableDeclarator':
case 'ClassDeclaration':
case 'FunctionDeclaration':
return node.id.name
default:
return '(unknown source node type)'
}
}
module.exports.nodeName = nodeName