@@ -5,11 +5,12 @@ namespace ts.formatting {
55 export class RulesProvider {
66 private globalRules : Rules ;
77 private options : ts . FormatCodeSettings ;
8- private activeRules : Rule [ ] ;
98 private rulesMap : RulesMap ;
109
1110 constructor ( ) {
1211 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 ) ;
1314 }
1415
1516 public getRuleName ( rule : Rule ) : string {
@@ -30,141 +31,8 @@ namespace ts.formatting {
3031
3132 public ensureUpToDate ( options : ts . FormatCodeSettings ) {
3233 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 ;
3834 this . options = ts . clone ( options ) ;
3935 }
4036 }
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- }
16937 }
17038}
0 commit comments