1pub mod declare_variable;
4pub mod enum_declaration;
5pub mod interface;
6pub mod namespace;
7pub mod type_alias;
8pub mod type_annotations;
9pub mod type_declarations;
10
11pub use interface::InterfaceDeclaration;
12
13use crate::{derive_ASTNode, TSXKeyword, TSXToken};
14
15#[apply(derive_ASTNode)]
17#[derive(Debug, Clone, PartialEq, Eq)]
18pub enum Visibility {
19 Private,
20 Public,
21 Protected,
22}
23
24impl Visibility {
25 #[must_use]
26 pub fn as_str(&self) -> &'static str {
27 match self {
28 Visibility::Private => "private ",
29 Visibility::Public => "public ",
30 Visibility::Protected => "protected ",
31 }
32 }
33
34 #[must_use]
35 pub fn token_is_visibility_specifier(t: &TSXToken) -> bool {
36 matches!(
37 t,
38 TSXToken::Keyword(TSXKeyword::Private | TSXKeyword::Public | TSXKeyword::Protected)
39 )
40 }
41}