@@ -5,11 +5,12 @@ namespace ts.formatting {
5
5
export class RulesProvider {
6
6
private globalRules : Rules ;
7
7
private options : ts . FormatCodeSettings ;
8
- private activeRules : Rule [ ] ;
9
8
private rulesMap : RulesMap ;
10
9
11
10
constructor ( ) {
12
11
this . globalRules = new Rules ( ) ;
12
+ const activeRules = this . globalRules . HighPriorityCommonRules . slice ( 0 ) . concat ( this . globalRules . UserConfigurableRules ) . concat ( this . globalRules . LowPriorityCommonRules ) ;
13
+ this . rulesMap = RulesMap . create ( activeRules ) ;
13
14
}
14
15
15
16
public getRuleName ( rule : Rule ) : string {
@@ -30,141 +31,8 @@ namespace ts.formatting {
30
31
31
32
public ensureUpToDate ( options : ts . FormatCodeSettings ) {
32
33
if ( ! this . options || ! ts . compareDataObjects ( this . options , options ) ) {
33
- const activeRules = this . createActiveRules ( options ) ;
34
- const rulesMap = RulesMap . create ( activeRules ) ;
35
-
36
- this . activeRules = activeRules ;
37
- this . rulesMap = rulesMap ;
38
34
this . options = ts . clone ( options ) ;
39
35
}
40
36
}
41
-
42
- private createActiveRules ( options : ts . FormatCodeSettings ) : Rule [ ] {
43
- let rules = this . globalRules . HighPriorityCommonRules . slice ( 0 ) ;
44
-
45
- if ( options . insertSpaceAfterConstructor ) {
46
- rules . push ( this . globalRules . SpaceAfterConstructor ) ;
47
- }
48
- else {
49
- rules . push ( this . globalRules . NoSpaceAfterConstructor ) ;
50
- }
51
-
52
- if ( options . insertSpaceAfterCommaDelimiter ) {
53
- rules . push ( this . globalRules . SpaceAfterComma ) ;
54
- }
55
- else {
56
- rules . push ( this . globalRules . NoSpaceAfterComma ) ;
57
- }
58
-
59
- if ( options . insertSpaceAfterFunctionKeywordForAnonymousFunctions ) {
60
- rules . push ( this . globalRules . SpaceAfterAnonymousFunctionKeyword ) ;
61
- }
62
- else {
63
- rules . push ( this . globalRules . NoSpaceAfterAnonymousFunctionKeyword ) ;
64
- }
65
-
66
- if ( options . insertSpaceAfterKeywordsInControlFlowStatements ) {
67
- rules . push ( this . globalRules . SpaceAfterKeywordInControl ) ;
68
- }
69
- else {
70
- rules . push ( this . globalRules . NoSpaceAfterKeywordInControl ) ;
71
- }
72
-
73
- if ( options . insertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis ) {
74
- rules . push ( this . globalRules . SpaceAfterOpenParen ) ;
75
- rules . push ( this . globalRules . SpaceBeforeCloseParen ) ;
76
- rules . push ( this . globalRules . NoSpaceBetweenParens ) ;
77
- }
78
- else {
79
- rules . push ( this . globalRules . NoSpaceAfterOpenParen ) ;
80
- rules . push ( this . globalRules . NoSpaceBeforeCloseParen ) ;
81
- rules . push ( this . globalRules . NoSpaceBetweenParens ) ;
82
- }
83
-
84
- if ( options . insertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets ) {
85
- rules . push ( this . globalRules . SpaceAfterOpenBracket ) ;
86
- rules . push ( this . globalRules . SpaceBeforeCloseBracket ) ;
87
- rules . push ( this . globalRules . NoSpaceBetweenBrackets ) ;
88
- }
89
- else {
90
- rules . push ( this . globalRules . NoSpaceAfterOpenBracket ) ;
91
- rules . push ( this . globalRules . NoSpaceBeforeCloseBracket ) ;
92
- rules . push ( this . globalRules . NoSpaceBetweenBrackets ) ;
93
- }
94
-
95
- // The default value of InsertSpaceAfterOpeningAndBeforeClosingNonemptyBraces is true
96
- // so if the option is undefined, we should treat it as true as well
97
- if ( options . insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces !== false ) {
98
- rules . push ( this . globalRules . SpaceAfterOpenBrace ) ;
99
- rules . push ( this . globalRules . SpaceBeforeCloseBrace ) ;
100
- rules . push ( this . globalRules . NoSpaceBetweenEmptyBraceBrackets ) ;
101
- }
102
- else {
103
- rules . push ( this . globalRules . NoSpaceAfterOpenBrace ) ;
104
- rules . push ( this . globalRules . NoSpaceBeforeCloseBrace ) ;
105
- rules . push ( this . globalRules . NoSpaceBetweenEmptyBraceBrackets ) ;
106
- }
107
-
108
- if ( options . insertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces ) {
109
- rules . push ( this . globalRules . SpaceAfterTemplateHeadAndMiddle ) ;
110
- rules . push ( this . globalRules . SpaceBeforeTemplateMiddleAndTail ) ;
111
- }
112
- else {
113
- rules . push ( this . globalRules . NoSpaceAfterTemplateHeadAndMiddle ) ;
114
- rules . push ( this . globalRules . NoSpaceBeforeTemplateMiddleAndTail ) ;
115
- }
116
-
117
- if ( options . insertSpaceAfterOpeningAndBeforeClosingJsxExpressionBraces ) {
118
- rules . push ( this . globalRules . SpaceAfterOpenBraceInJsxExpression ) ;
119
- rules . push ( this . globalRules . SpaceBeforeCloseBraceInJsxExpression ) ;
120
- }
121
- else {
122
- rules . push ( this . globalRules . NoSpaceAfterOpenBraceInJsxExpression ) ;
123
- rules . push ( this . globalRules . NoSpaceBeforeCloseBraceInJsxExpression ) ;
124
- }
125
-
126
- if ( options . insertSpaceAfterSemicolonInForStatements ) {
127
- rules . push ( this . globalRules . SpaceAfterSemicolonInFor ) ;
128
- }
129
- else {
130
- rules . push ( this . globalRules . NoSpaceAfterSemicolonInFor ) ;
131
- }
132
-
133
- if ( options . insertSpaceBeforeAndAfterBinaryOperators ) {
134
- rules . push ( this . globalRules . SpaceBeforeBinaryOperator ) ;
135
- rules . push ( this . globalRules . SpaceAfterBinaryOperator ) ;
136
- }
137
- else {
138
- rules . push ( this . globalRules . NoSpaceBeforeBinaryOperator ) ;
139
- rules . push ( this . globalRules . NoSpaceAfterBinaryOperator ) ;
140
- }
141
-
142
- if ( options . insertSpaceBeforeFunctionParenthesis ) {
143
- rules . push ( this . globalRules . SpaceBeforeOpenParenInFuncDecl ) ;
144
- }
145
- else {
146
- rules . push ( this . globalRules . NoSpaceBeforeOpenParenInFuncDecl ) ;
147
- }
148
-
149
- if ( options . placeOpenBraceOnNewLineForControlBlocks ) {
150
- rules . push ( this . globalRules . NewLineBeforeOpenBraceInControl ) ;
151
- }
152
-
153
- if ( options . placeOpenBraceOnNewLineForFunctions ) {
154
- rules . push ( this . globalRules . NewLineBeforeOpenBraceInFunction ) ;
155
- rules . push ( this . globalRules . NewLineBeforeOpenBraceInTypeScriptDeclWithBlock ) ;
156
- }
157
-
158
- if ( options . insertSpaceAfterTypeAssertion ) {
159
- rules . push ( this . globalRules . SpaceAfterTypeAssertion ) ;
160
- }
161
- else {
162
- rules . push ( this . globalRules . NoSpaceAfterTypeAssertion ) ;
163
- }
164
-
165
- rules = rules . concat ( this . globalRules . LowPriorityCommonRules ) ;
166
-
167
- return rules ;
168
- }
169
37
}
170
38
}
0 commit comments