2
2
3
3
import * as ts from "typescript" ;
4
4
import formatter from "./formatter" ;
5
- import { createDefaultFormatCodeOptions , createDefaultAdditionalFormatCodeOptions } from "./utils" ;
5
+ import { createDefaultFormatCodeOptions } from "./utils" ;
6
6
7
7
import * as fs from "fs" ;
8
8
9
9
import base from "./provider/base" ;
10
10
import editorconfig from "./provider/editorconfig" ;
11
- import tslintjson from "./provider/tslintjson" ;
11
+ import tslintjson , { postProcess as tslintPostProcess } from "./provider/tslintjson" ;
12
12
13
13
export interface Options {
14
14
dryRun ?: boolean ;
@@ -21,6 +21,10 @@ export interface Options {
21
21
tsfmt : boolean ;
22
22
}
23
23
24
+ export interface PostProcess {
25
+ ( fileName : string , formattedCode : string , opts : Options , formatOptions : ts . FormatCodeOptions ) : string ;
26
+ }
27
+
24
28
export interface ResultMap {
25
29
[ fileName : string ] : Result ;
26
30
}
@@ -34,11 +38,6 @@ export interface Result {
34
38
dest : string ;
35
39
}
36
40
37
- export interface AdditionalFormatOptions {
38
- noConsecutiveBlankLines : boolean ;
39
- noTrailingWhitespace : boolean ;
40
- }
41
-
42
41
export function processFiles ( files : string [ ] , opts : Options ) : Promise < ResultMap > {
43
42
"use strict" ;
44
43
@@ -89,16 +88,17 @@ export function processString(fileName: string, content: string, opts: Options):
89
88
"use strict" ;
90
89
91
90
let formatOptions = createDefaultFormatCodeOptions ( ) ;
92
- let additionalOptions = createDefaultAdditionalFormatCodeOptions ( ) ;
93
91
let optGenPromises : ( ts . FormatCodeOptions | Promise < ts . FormatCodeOptions > ) [ ] = [ ] ;
92
+ let postProcesses : PostProcess [ ] = [ ] ;
94
93
if ( opts . tsfmt ) {
95
94
optGenPromises . push ( base ( fileName , opts , formatOptions ) ) ;
96
95
}
97
96
if ( opts . editorconfig ) {
98
97
optGenPromises . push ( editorconfig ( fileName , opts , formatOptions ) ) ;
99
98
}
100
99
if ( opts . tslint ) {
101
- optGenPromises . push ( tslintjson ( fileName , opts , formatOptions , additionalOptions ) ) ;
100
+ optGenPromises . push ( tslintjson ( fileName , opts , formatOptions ) ) ;
101
+ postProcesses . push ( tslintPostProcess ) ;
102
102
}
103
103
104
104
return Promise
@@ -110,13 +110,9 @@ export function processString(fileName: string, content: string, opts: Options):
110
110
formattedCode += "\n" ;
111
111
}
112
112
113
- if ( additionalOptions . noTrailingWhitespace ) {
114
- formattedCode = formattedCode . replace ( / ^ \s + $ / mg, "" ) ;
115
- }
116
-
117
- if ( additionalOptions . noConsecutiveBlankLines ) {
118
- formattedCode = formattedCode . replace ( / \n \n ^ $ / mg, "" ) ;
119
- }
113
+ postProcesses . forEach ( postProcess => {
114
+ formattedCode = postProcess ( fileName , formattedCode , opts , formatOptions ) || formattedCode ;
115
+ } ) ;
120
116
121
117
// TODO replace newline code. NewLineCharacter params affect to only "new" newline. maybe.
122
118
let message : string ;
0 commit comments