Skip to content
This repository was archived by the owner on Jan 19, 2019. It is now read-only.

Commit 53b7cbe

Browse files
committed
New: Accessibility Modifiers (fixes #87)
1 parent ac0c95d commit 53b7cbe

File tree

3 files changed

+1151
-0
lines changed

3 files changed

+1151
-0
lines changed

lib/ast-converter.js

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -420,6 +420,8 @@ module.exports = function(ast, extra) {
420420
return null;
421421
}
422422

423+
var accessibility;
424+
423425
var result = {
424426
type: "",
425427
range: [node.getStart(), node.end],
@@ -498,6 +500,31 @@ module.exports = function(ast, extra) {
498500
};
499501
}
500502

503+
/**
504+
* Gets a TSNode's accessibility level
505+
* @returns {string} accessibility "public", "protected", or "private"
506+
*/
507+
function getTSNodeAccessibility() {
508+
var modifiers = node.modifiers;
509+
if (!modifiers) {
510+
return "";
511+
}
512+
for (var i = 0; i < modifiers.length; i++) {
513+
var modifier = modifiers[i];
514+
switch (modifier.kind) {
515+
case SyntaxKind.PublicKeyword:
516+
return "public";
517+
case SyntaxKind.ProtectedKeyword:
518+
return "protected";
519+
case SyntaxKind.PrivateKeyword:
520+
return "private";
521+
default:
522+
continue;
523+
}
524+
}
525+
return "";
526+
}
527+
501528
/**
502529
* Converts a TSNode's typeParameters array to a flow-like TypeParameterDeclaration node
503530
* @param {TSNode[]} typeParameters TSNode typeParameters
@@ -988,6 +1015,11 @@ module.exports = function(ast, extra) {
9881015
return convertChild(d.expression);
9891016
}) : []
9901017
});
1018+
1019+
accessibility = getTSNodeAccessibility();
1020+
if (accessibility) {
1021+
result.accessibility = accessibility;
1022+
}
9911023
break;
9921024

9931025
case SyntaxKind.GetAccessor:
@@ -1073,6 +1105,11 @@ module.exports = function(ast, extra) {
10731105

10741106
}
10751107

1108+
accessibility = getTSNodeAccessibility();
1109+
if (accessibility) {
1110+
result.accessibility = accessibility;
1111+
}
1112+
10761113
if (node.kind === SyntaxKind.GetAccessor) {
10771114
result.kind = "get";
10781115
} else if (node.kind === SyntaxKind.SetAccessor) {

0 commit comments

Comments
 (0)