Skip to content

Commit bb05b98

Browse files
committed
Parse tslint config options properly
1 parent ed47896 commit bb05b98

File tree

4 files changed

+38
-5
lines changed

4 files changed

+38
-5
lines changed

lib/cli.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ function showResultHandler(resultMap: lib.ResultMap): Promise<any> {
106106
.map(fileName => resultMap[fileName])
107107
.forEach(result => {
108108
if (result.message) {
109-
process.stdout.write(result.message.replace(/^\s+$/mg, "").replace(/\n\n^$/mg, ""));
109+
process.stdout.write(result.message);
110110
}
111111
});
112112
}

lib/index.ts

+15-1
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,11 @@ export interface Result {
3333
dest: string;
3434
}
3535

36+
export interface AdditionalFormatOptions {
37+
noConsecutiveBlankLines: boolean;
38+
noTrailingWhitespace: boolean;
39+
}
40+
3641
export function processFiles(files: string[], opts: Options): Promise<ResultMap> {
3742
"use strict";
3843

@@ -83,6 +88,7 @@ export function processString(fileName: string, content: string, opts: Options):
8388
"use strict";
8489

8590
var options = utils.createDefaultFormatCodeOptions();
91+
var additionalOptions = utils.createDefaultAdditionalFormatCodeOptions();
8692
var optGenPromises: (ts.FormatCodeOptions | Promise<ts.FormatCodeOptions>)[] = [];
8793
if (opts.tsfmt) {
8894
optGenPromises.push(base.makeFormatCodeOptions(fileName, options));
@@ -91,7 +97,7 @@ export function processString(fileName: string, content: string, opts: Options):
9197
optGenPromises.push(editorconfig.makeFormatCodeOptions(fileName, options));
9298
}
9399
if (opts.tslint) {
94-
optGenPromises.push(tslintjson.makeFormatCodeOptions(fileName, options));
100+
optGenPromises.push(tslintjson.makeFormatCodeOptions(fileName, options, additionalOptions));
95101
}
96102

97103
return Promise
@@ -103,6 +109,14 @@ export function processString(fileName: string, content: string, opts: Options):
103109
formattedCode += "\n";
104110
}
105111

112+
if (additionalOptions.noTrailingWhitespace) {
113+
formattedCode = formattedCode.replace(/^\s+$/mg, "");
114+
}
115+
116+
if (additionalOptions.noConsecutiveBlankLines) {
117+
formattedCode = formattedCode.replace(/\n\n^$/mg, "");
118+
}
119+
106120
// TODO replace newline code. NewLineCharacter params affect to only "new" newline. maybe.
107121
var message: string;
108122
var error = false;

lib/provider/tslintjson.ts

+12-3
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import ts = require("typescript");
44

55
import path = require("path");
66
import fs = require("fs");
7+
import lib = require("../index");
78

89
function getConfigFileName(baseFileName: string, configFileName: string): string {
910
"use strict";
@@ -23,6 +24,8 @@ function getConfigFileName(baseFileName: string, configFileName: string): string
2324

2425
interface TslintSettings {
2526
rules: {
27+
"no-consecutive-blank-lines": boolean,
28+
"no-trailing-whitespace": boolean,
2629
whitespace: {
2730
0: boolean;
2831
1: string;
@@ -35,15 +38,13 @@ interface TslintSettings {
3538
};
3639
}
3740

38-
export function makeFormatCodeOptions(fileName: string, options: ts.FormatCodeOptions): ts.FormatCodeOptions {
41+
export function makeFormatCodeOptions(fileName: string, options: ts.FormatCodeOptions, additionalOptions: lib.AdditionalFormatOptions): ts.FormatCodeOptions {
3942
"use strict";
4043

4144
var configFileName = getConfigFileName(path.resolve(fileName), "tslint.json");
4245
if (!configFileName) {
4346
return options;
4447
}
45-
// console.log("tslint makeFormatCodeOptions");
46-
// console.log("read " + configFileName);
4748

4849
var config: TslintSettings = JSON.parse(<any>fs.readFileSync(configFileName, "utf-8"));
4950
if (!config.rules) {
@@ -67,5 +68,13 @@ export function makeFormatCodeOptions(fileName: string, options: ts.FormatCodeOp
6768
}
6869
}
6970

71+
if (config.rules["no-consecutive-blank-lines"] === true) {
72+
additionalOptions.noConsecutiveBlankLines = true;
73+
}
74+
75+
if (config.rules["no-trailing-whitespace"] === true) {
76+
additionalOptions.noTrailingWhitespace = true;
77+
}
78+
7079
return options;
7180
}

lib/utils.ts

+10
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
"use strict";
22

33
import ts = require("typescript");
4+
import lib = require("./index");
45

56
export function createDefaultFormatCodeOptions(): ts.FormatCodeOptions {
67
"use strict";
@@ -21,3 +22,12 @@ export function createDefaultFormatCodeOptions(): ts.FormatCodeOptions {
2122
PlaceOpenBraceOnNewLineForControlBlocks: false
2223
};
2324
}
25+
26+
export function createDefaultAdditionalFormatCodeOptions(): lib.AdditionalFormatOptions {
27+
"use strict";
28+
29+
return {
30+
noConsecutiveBlankLines: false,
31+
noTrailingWhitespace: false
32+
};
33+
}

0 commit comments

Comments
 (0)