Skip to content

Commit 23a2bfb

Browse files
aspondaJosh Goldberg
authored and
Josh Goldberg
committed
Added converter for max-line-length rule (#195)
* feat: add converter for max-line-length * Update max-line-length.test.ts
1 parent 5fa87cd commit 23a2bfb

File tree

3 files changed

+239
-1
lines changed

3 files changed

+239
-1
lines changed

src/rules/converters.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import { convertLabelPosition } from "./converters/label-position";
2323
import { convertLinebreakStyle } from "./converters/linebreak-style";
2424
import { convertMaxClassesPerFile } from "./converters/max-classes-per-file";
2525
import { convertMaxFileLineCount } from "./converters/max-file-line-count";
26+
import { convertMaxLineLength } from "./converters/max-line-length";
2627
import { convertMemberOrdering } from "./converters/member-ordering";
2728
import { convertNewlinePerChainedCall } from "./converters/newline-per-chained-call";
2829
import { convertNewParens } from "./converters/new-parens";
@@ -185,6 +186,7 @@ export const converters = new Map([
185186
["linebreak-style", convertLinebreakStyle],
186187
["max-classes-per-file", convertMaxClassesPerFile],
187188
["max-file-line-count", convertMaxFileLineCount],
189+
["max-line-length", convertMaxLineLength],
188190
["no-consecutive-blank-lines", convertNoConsecutiveBlankLines],
189191
["no-console", convertNoConsole],
190192
["no-empty", convertNoEmpty],
@@ -217,7 +219,6 @@ export const converters = new Map([
217219
// TSLint core rules:
218220
// ["ban", convertBan], // no-restricted-properties
219221
// ["import-blacklist", convertImportBlacklist], // no-restricted-imports
220-
// ["max-line-length", convertMaxLineLength], // max-len
221222
// ["newline-before-return", convertNewlineBeforeReturn],
222223
// ["no-duplicate-variable", convertNoDuplicateVariable], // no-redeclare
223224
// ["no-shadowed-variable", convertNoShadowedVariable], // no-shadow
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
import { RuleConverter } from "../converter";
2+
3+
export const convertMaxLineLength: RuleConverter = tslintRule => {
4+
return {
5+
rules: [
6+
{
7+
...collectArguments(tslintRule.ruleArguments),
8+
ruleName: "max-len",
9+
},
10+
],
11+
};
12+
};
13+
14+
const collectArguments = (ruleArguments: any[]) => {
15+
if (ruleArguments.length === 0 || ruleArguments[0] === false || ruleArguments.length < 2) {
16+
return undefined;
17+
}
18+
19+
if (ruleArguments.length === 2 && typeof ruleArguments[1] === "number") {
20+
return {
21+
ruleArguments: [
22+
{
23+
code: ruleArguments[1],
24+
},
25+
],
26+
};
27+
}
28+
29+
const argument = ruleArguments[1];
30+
31+
return {
32+
ruleArguments: [
33+
{
34+
...("limit" in argument && { code: argument.limit }),
35+
...("ignore-pattern" in argument && { ignorePattern: argument["ignore-pattern"] }),
36+
...("check-strings" in argument && { ignoreStrings: !argument["check-strings"] }),
37+
...("check-regex" in argument && {
38+
ignoreRegExpLiterals: !argument["check-regex"],
39+
}),
40+
},
41+
],
42+
};
43+
};
Lines changed: 194 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,194 @@
1+
import { convertMaxLineLength } from "../max-line-length";
2+
3+
describe(convertMaxLineLength, () => {
4+
test("conversion without arguments", () => {
5+
const result = convertMaxLineLength({
6+
ruleArguments: [],
7+
});
8+
9+
expect(result).toEqual({
10+
rules: [
11+
{
12+
ruleName: "max-len",
13+
},
14+
],
15+
});
16+
});
17+
18+
test("conversion with one argument true value", () => {
19+
const result = convertMaxLineLength({
20+
ruleArguments: [true],
21+
});
22+
23+
expect(result).toEqual({
24+
rules: [
25+
{
26+
ruleName: "max-len",
27+
},
28+
],
29+
});
30+
});
31+
32+
test("conversion with two arguments and first is false", () => {
33+
const result = convertMaxLineLength({
34+
ruleArguments: [false, 123],
35+
});
36+
37+
expect(result).toEqual({
38+
rules: [
39+
{
40+
ruleName: "max-len",
41+
},
42+
],
43+
});
44+
});
45+
46+
test("conversion with two arguments and second is number", () => {
47+
const result = convertMaxLineLength({
48+
ruleArguments: [true, 123],
49+
});
50+
51+
expect(result).toEqual({
52+
rules: [
53+
{
54+
ruleArguments: [{ code: 123 }],
55+
ruleName: "max-len",
56+
},
57+
],
58+
});
59+
});
60+
61+
test("conversion with two arguments and second is object", () => {
62+
const result = convertMaxLineLength({
63+
ruleArguments: [
64+
true,
65+
{
66+
limit: 123,
67+
"ignore-pattern": "^import |^export {(.*?)}",
68+
"check-strings": true,
69+
"check-regex": true,
70+
},
71+
],
72+
});
73+
74+
expect(result).toEqual({
75+
rules: [
76+
{
77+
ruleArguments: [
78+
{
79+
code: 123,
80+
ignorePattern: "^import |^export {(.*?)}",
81+
ignoreStrings: false,
82+
ignoreRegExpLiterals: false,
83+
},
84+
],
85+
ruleName: "max-len",
86+
},
87+
],
88+
});
89+
});
90+
91+
test("conversion with check-strings inverting value true to false", () => {
92+
const result = convertMaxLineLength({
93+
ruleArguments: [
94+
true,
95+
{
96+
limit: 123,
97+
"check-strings": true,
98+
},
99+
],
100+
});
101+
102+
expect(result).toEqual({
103+
rules: [
104+
{
105+
ruleArguments: [
106+
{
107+
code: 123,
108+
ignoreStrings: false,
109+
},
110+
],
111+
ruleName: "max-len",
112+
},
113+
],
114+
});
115+
});
116+
117+
test("conversion with check-strings inverting value false to true", () => {
118+
const result = convertMaxLineLength({
119+
ruleArguments: [
120+
true,
121+
{
122+
limit: 123,
123+
"check-strings": false,
124+
},
125+
],
126+
});
127+
128+
expect(result).toEqual({
129+
rules: [
130+
{
131+
ruleArguments: [
132+
{
133+
code: 123,
134+
ignoreStrings: true,
135+
},
136+
],
137+
ruleName: "max-len",
138+
},
139+
],
140+
});
141+
});
142+
143+
test("conversion with check-regex inverting value true to false", () => {
144+
const result = convertMaxLineLength({
145+
ruleArguments: [
146+
true,
147+
{
148+
limit: 123,
149+
"check-regex": true,
150+
},
151+
],
152+
});
153+
154+
expect(result).toEqual({
155+
rules: [
156+
{
157+
ruleArguments: [
158+
{
159+
code: 123,
160+
ignoreRegExpLiterals: false,
161+
},
162+
],
163+
ruleName: "max-len",
164+
},
165+
],
166+
});
167+
});
168+
169+
test("conversion with check-regex inverting value false to true", () => {
170+
const result = convertMaxLineLength({
171+
ruleArguments: [
172+
true,
173+
{
174+
limit: 123,
175+
"check-regex": false,
176+
},
177+
],
178+
});
179+
180+
expect(result).toEqual({
181+
rules: [
182+
{
183+
ruleArguments: [
184+
{
185+
code: 123,
186+
ignoreRegExpLiterals: true,
187+
},
188+
],
189+
ruleName: "max-len",
190+
},
191+
],
192+
});
193+
});
194+
});

0 commit comments

Comments
 (0)