3
3
/* @internal */
4
4
namespace ts . formatting {
5
5
export namespace Shared {
6
- export interface ITokenAccess {
7
- GetTokens ( ) : SyntaxKind [ ] ;
8
- Contains ( token : SyntaxKind ) : boolean ;
9
- isSpecific ( ) : boolean ;
10
- }
11
-
12
- export class TokenRangeAccess implements ITokenAccess {
13
- private tokens : SyntaxKind [ ] ;
14
-
15
- constructor ( from : SyntaxKind , to : SyntaxKind , except : SyntaxKind [ ] ) {
16
- this . tokens = [ ] ;
17
- for ( let token = from ; token <= to ; token ++ ) {
18
- if ( ts . indexOf ( except , token ) < 0 ) {
19
- this . tokens . push ( token ) ;
20
- }
21
- }
22
- }
23
-
24
- public GetTokens ( ) : SyntaxKind [ ] {
25
- return this . tokens ;
26
- }
27
-
28
- public Contains ( token : SyntaxKind ) : boolean {
29
- return this . tokens . indexOf ( token ) >= 0 ;
30
- }
31
-
32
- public isSpecific ( ) { return true ; }
6
+ const allTokens : SyntaxKind [ ] = [ ] ;
7
+ for ( let token = SyntaxKind . FirstToken ; token <= SyntaxKind . LastToken ; token ++ ) {
8
+ allTokens . push ( token ) ;
33
9
}
34
10
35
- export class TokenValuesAccess implements ITokenAccess {
36
- private tokens : SyntaxKind [ ] ;
37
-
38
- constructor ( tks : SyntaxKind [ ] ) {
39
- this . tokens = tks && tks . length ? tks : < SyntaxKind [ ] > [ ] ;
40
- }
11
+ class TokenValuesAccess implements TokenRange {
12
+ constructor ( private readonly tokens : SyntaxKind [ ] = [ ] ) { }
41
13
42
14
public GetTokens ( ) : SyntaxKind [ ] {
43
15
return this . tokens ;
@@ -50,9 +22,8 @@ namespace ts.formatting {
50
22
public isSpecific ( ) { return true ; }
51
23
}
52
24
53
- export class TokenSingleValueAccess implements ITokenAccess {
54
- constructor ( public token : SyntaxKind ) {
55
- }
25
+ class TokenSingleValueAccess implements TokenRange {
26
+ constructor ( private readonly token : SyntaxKind ) { }
56
27
57
28
public GetTokens ( ) : SyntaxKind [ ] {
58
29
return [ this . token ] ;
@@ -65,12 +36,7 @@ namespace ts.formatting {
65
36
public isSpecific ( ) { return true ; }
66
37
}
67
38
68
- const allTokens : SyntaxKind [ ] = [ ] ;
69
- for ( let token = SyntaxKind . FirstToken ; token <= SyntaxKind . LastToken ; token ++ ) {
70
- allTokens . push ( token ) ;
71
- }
72
-
73
- export class TokenAllAccess implements ITokenAccess {
39
+ class TokenAllAccess implements TokenRange {
74
40
public GetTokens ( ) : SyntaxKind [ ] {
75
41
return allTokens ;
76
42
}
@@ -86,8 +52,8 @@ namespace ts.formatting {
86
52
public isSpecific ( ) { return false ; }
87
53
}
88
54
89
- export class TokenAllExceptAccess implements ITokenAccess {
90
- constructor ( readonly except : SyntaxKind ) { }
55
+ class TokenAllExceptAccess implements TokenRange {
56
+ constructor ( private readonly except : SyntaxKind ) { }
91
57
92
58
public GetTokens ( ) : SyntaxKind [ ] {
93
59
return allTokens . filter ( t => t !== this . except ) ;
@@ -100,55 +66,58 @@ namespace ts.formatting {
100
66
public isSpecific ( ) { return false ; }
101
67
}
102
68
103
- export class TokenRange {
104
- constructor ( public tokenAccess : ITokenAccess ) {
105
- }
106
-
107
- static FromToken ( token : SyntaxKind ) : TokenRange {
108
- return new TokenRange ( new TokenSingleValueAccess ( token ) ) ;
109
- }
110
-
111
- static FromTokens ( tokens : SyntaxKind [ ] ) : TokenRange {
112
- return new TokenRange ( new TokenValuesAccess ( tokens ) ) ;
113
- }
114
-
115
- static FromRange ( f : SyntaxKind , to : SyntaxKind , except : SyntaxKind [ ] = [ ] ) : TokenRange {
116
- return new TokenRange ( new TokenRangeAccess ( f , to , except ) ) ;
117
- }
118
-
119
- static AnyExcept ( token : SyntaxKind ) : TokenRange {
120
- return new TokenRange ( new TokenAllExceptAccess ( token ) ) ;
121
- }
122
-
123
- public GetTokens ( ) : SyntaxKind [ ] {
124
- return this . tokenAccess . GetTokens ( ) ;
125
- }
126
-
127
- public Contains ( token : SyntaxKind ) : boolean {
128
- return this . tokenAccess . Contains ( token ) ;
129
- }
69
+ export interface TokenRange {
70
+ GetTokens ( ) : SyntaxKind [ ] ;
71
+ Contains ( token : SyntaxKind ) : boolean ;
72
+ isSpecific ( ) : boolean ;
73
+ }
130
74
131
- public toString ( ) : string {
132
- return this . tokenAccess . toString ( ) ;
75
+ export namespace TokenRange {
76
+ export function FromToken ( token : SyntaxKind ) : TokenRange {
77
+ return new TokenSingleValueAccess ( token ) ;
133
78
}
134
79
135
- public isSpecific ( ) {
136
- return this . tokenAccess . isSpecific ( ) ;
80
+ export function FromTokens ( tokens : SyntaxKind [ ] ) : TokenRange {
81
+ return new TokenValuesAccess ( tokens ) ;
137
82
}
138
83
139
- static Any : TokenRange = new TokenRange ( new TokenAllAccess ( ) ) ;
140
- static AnyIncludingMultilineComments = TokenRange . FromTokens ( [ ...allTokens , SyntaxKind . MultiLineCommentTrivia ] ) ;
141
- static Keywords = TokenRange . FromRange ( SyntaxKind . FirstKeyword , SyntaxKind . LastKeyword ) ;
142
- static BinaryOperators = TokenRange . FromRange ( SyntaxKind . FirstBinaryOperator , SyntaxKind . LastBinaryOperator ) ;
143
- static BinaryKeywordOperators = TokenRange . FromTokens ( [ SyntaxKind . InKeyword , SyntaxKind . InstanceOfKeyword , SyntaxKind . OfKeyword , SyntaxKind . AsKeyword , SyntaxKind . IsKeyword ] ) ;
144
- static UnaryPrefixOperators = TokenRange . FromTokens ( [ SyntaxKind . PlusPlusToken , SyntaxKind . MinusMinusToken , SyntaxKind . TildeToken , SyntaxKind . ExclamationToken ] ) ;
145
- static UnaryPrefixExpressions = TokenRange . FromTokens ( [ SyntaxKind . NumericLiteral , SyntaxKind . Identifier , SyntaxKind . OpenParenToken , SyntaxKind . OpenBracketToken , SyntaxKind . OpenBraceToken , SyntaxKind . ThisKeyword , SyntaxKind . NewKeyword ] ) ;
146
- static UnaryPreincrementExpressions = TokenRange . FromTokens ( [ SyntaxKind . Identifier , SyntaxKind . OpenParenToken , SyntaxKind . ThisKeyword , SyntaxKind . NewKeyword ] ) ;
147
- static UnaryPostincrementExpressions = TokenRange . FromTokens ( [ SyntaxKind . Identifier , SyntaxKind . CloseParenToken , SyntaxKind . CloseBracketToken , SyntaxKind . NewKeyword ] ) ;
148
- static UnaryPredecrementExpressions = TokenRange . FromTokens ( [ SyntaxKind . Identifier , SyntaxKind . OpenParenToken , SyntaxKind . ThisKeyword , SyntaxKind . NewKeyword ] ) ;
149
- static UnaryPostdecrementExpressions = TokenRange . FromTokens ( [ SyntaxKind . Identifier , SyntaxKind . CloseParenToken , SyntaxKind . CloseBracketToken , SyntaxKind . NewKeyword ] ) ;
150
- static Comments = TokenRange . FromTokens ( [ SyntaxKind . SingleLineCommentTrivia , SyntaxKind . MultiLineCommentTrivia ] ) ;
151
- static TypeNames = TokenRange . FromTokens ( [ SyntaxKind . Identifier , SyntaxKind . NumberKeyword , SyntaxKind . StringKeyword , SyntaxKind . BooleanKeyword , SyntaxKind . SymbolKeyword , SyntaxKind . VoidKeyword , SyntaxKind . AnyKeyword ] ) ;
84
+ export function FromRange ( from : SyntaxKind , to : SyntaxKind , except : SyntaxKind [ ] = [ ] ) : TokenRange {
85
+ const tokens : SyntaxKind [ ] = [ ] ;
86
+ for ( let token = from ; token <= to ; token ++ ) {
87
+ if ( ts . indexOf ( except , token ) < 0 ) {
88
+ tokens . push ( token ) ;
89
+ }
90
+ }
91
+ return new TokenValuesAccess ( tokens ) ;
92
+ }
93
+
94
+ export function AnyExcept ( token : SyntaxKind ) : TokenRange {
95
+ return new TokenAllExceptAccess ( token ) ;
96
+ }
97
+
98
+ export const Any : TokenRange = new TokenAllAccess ( ) ;
99
+ export const AnyIncludingMultilineComments = TokenRange . FromTokens ( [ ...allTokens , SyntaxKind . MultiLineCommentTrivia ] ) ;
100
+ export const Keywords = TokenRange . FromRange ( SyntaxKind . FirstKeyword , SyntaxKind . LastKeyword ) ;
101
+ export const BinaryOperators = TokenRange . FromRange ( SyntaxKind . FirstBinaryOperator , SyntaxKind . LastBinaryOperator ) ;
102
+ export const BinaryKeywordOperators = TokenRange . FromTokens ( [
103
+ SyntaxKind . InKeyword , SyntaxKind . InstanceOfKeyword , SyntaxKind . OfKeyword , SyntaxKind . AsKeyword , SyntaxKind . IsKeyword ] ) ;
104
+ export const UnaryPrefixOperators = TokenRange . FromTokens ( [
105
+ SyntaxKind . PlusPlusToken , SyntaxKind . MinusMinusToken , SyntaxKind . TildeToken , SyntaxKind . ExclamationToken ] ) ;
106
+ export const UnaryPrefixExpressions = TokenRange . FromTokens ( [
107
+ SyntaxKind . NumericLiteral , SyntaxKind . Identifier , SyntaxKind . OpenParenToken , SyntaxKind . OpenBracketToken ,
108
+ SyntaxKind . OpenBraceToken , SyntaxKind . ThisKeyword , SyntaxKind . NewKeyword ] ) ;
109
+ export const UnaryPreincrementExpressions = TokenRange . FromTokens ( [
110
+ SyntaxKind . Identifier , SyntaxKind . OpenParenToken , SyntaxKind . ThisKeyword , SyntaxKind . NewKeyword ] ) ;
111
+ export const UnaryPostincrementExpressions = TokenRange . FromTokens ( [
112
+ SyntaxKind . Identifier , SyntaxKind . CloseParenToken , SyntaxKind . CloseBracketToken , SyntaxKind . NewKeyword ] ) ;
113
+ export const UnaryPredecrementExpressions = TokenRange . FromTokens ( [
114
+ SyntaxKind . Identifier , SyntaxKind . OpenParenToken , SyntaxKind . ThisKeyword , SyntaxKind . NewKeyword ] ) ;
115
+ export const UnaryPostdecrementExpressions = TokenRange . FromTokens ( [
116
+ SyntaxKind . Identifier , SyntaxKind . CloseParenToken , SyntaxKind . CloseBracketToken , SyntaxKind . NewKeyword ] ) ;
117
+ export const Comments = TokenRange . FromTokens ( [ SyntaxKind . SingleLineCommentTrivia , SyntaxKind . MultiLineCommentTrivia ] ) ;
118
+ export const TypeNames = TokenRange . FromTokens ( [
119
+ SyntaxKind . Identifier , SyntaxKind . NumberKeyword , SyntaxKind . StringKeyword , SyntaxKind . BooleanKeyword ,
120
+ SyntaxKind . SymbolKeyword , SyntaxKind . VoidKeyword , SyntaxKind . AnyKeyword ] ) ;
152
121
}
153
122
}
154
123
}
0 commit comments