Skip to content

Commit 9b0a1f9

Browse files
Extracted common fix logic into functions (#105)
1 parent fbccacf commit 9b0a1f9

12 files changed

+149
-196
lines changed

lib/rules/letter-case.ts

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,8 @@ import type { Character, CharacterClassRange } from "regexpp/ast"
44
import {
55
createRule,
66
defineRegexpVisitor,
7-
fixerApplyEscape,
7+
fixReplaceNode,
88
getRegexpLocation,
9-
getRegexpRange,
109
isLetter,
1110
isLowercaseLetter,
1211
isUppercaseLetter,
@@ -107,17 +106,9 @@ export default createRule("letter-case", {
107106
char: reportNode.raw,
108107
case: letterCase,
109108
},
110-
fix(fixer) {
111-
const range = getRegexpRange(sourceCode, node, reportNode)
112-
if (range == null) {
113-
return null
114-
}
115-
const newText = convertText(CONVERTER[letterCase])
116-
return fixer.replaceTextRange(
117-
range,
118-
fixerApplyEscape(newText, node),
119-
)
120-
},
109+
fix: fixReplaceNode(sourceCode, node, reportNode, () =>
110+
convertText(CONVERTER[letterCase]),
111+
),
121112
})
122113
}
123114

lib/rules/negation.ts

Lines changed: 7 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,8 @@ import type { RegExpVisitor } from "regexpp/visitor"
77
import {
88
createRule,
99
defineRegexpVisitor,
10-
fixerApplyEscape,
10+
fixReplaceNode,
1111
getRegexpLocation,
12-
getRegexpRange,
1312
} from "../utils"
1413

1514
export default createRule("negation", {
@@ -49,20 +48,12 @@ export default createRule("negation", {
4948
loc: getRegexpLocation(sourceCode, node, ccNode),
5049
messageId: "unexpected",
5150
data: { negatedCharSet },
52-
fix(fixer) {
53-
const range = getRegexpRange(
54-
sourceCode,
55-
node,
56-
ccNode,
57-
)
58-
if (range == null) {
59-
return null
60-
}
61-
return fixer.replaceTextRange(
62-
range,
63-
fixerApplyEscape(negatedCharSet, node),
64-
)
65-
},
51+
fix: fixReplaceNode(
52+
sourceCode,
53+
node,
54+
ccNode,
55+
negatedCharSet,
56+
),
6657
})
6758
}
6859
},

lib/rules/no-useless-character-class.ts

Lines changed: 4 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,8 @@ import {
44
canUnwrapped,
55
createRule,
66
defineRegexpVisitor,
7-
fixerApplyEscape,
7+
fixReplaceNode,
88
getRegexpLocation,
9-
getRegexpRange,
109
} from "../utils"
1110

1211
export default createRule("no-useless-character-class", {
@@ -113,15 +112,7 @@ export default createRule("no-useless-character-class", {
113112
? " and range"
114113
: "",
115114
},
116-
fix(fixer) {
117-
const range = getRegexpRange(
118-
sourceCode,
119-
node,
120-
ccNode,
121-
)
122-
if (range == null) {
123-
return null
124-
}
115+
fix: fixReplaceNode(sourceCode, node, ccNode, () => {
125116
let text: string =
126117
element.type === "CharacterClassRange"
127118
? element.min.raw
@@ -137,11 +128,8 @@ export default createRule("no-useless-character-class", {
137128
text = `\\${text}`
138129
}
139130
}
140-
return fixer.replaceTextRange(
141-
range,
142-
fixerApplyEscape(text, node),
143-
)
144-
},
131+
return text
132+
}),
145133
})
146134
},
147135
}

lib/rules/no-useless-range.ts

Lines changed: 5 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,8 @@ import type { RegExpVisitor } from "regexpp/visitor"
33
import {
44
createRule,
55
defineRegexpVisitor,
6-
fixerApplyEscape,
6+
fixReplaceNode,
77
getRegexpLocation,
8-
getRegexpRange,
98
} from "../utils"
109

1110
export default createRule("no-useless-range", {
@@ -44,15 +43,7 @@ export default createRule("no-useless-range", {
4443
node,
4544
loc: getRegexpLocation(sourceCode, node, ccrNode),
4645
messageId: "unexpected",
47-
fix(fixer) {
48-
const range = getRegexpRange(
49-
sourceCode,
50-
node,
51-
ccrNode,
52-
)
53-
if (range == null) {
54-
return null
55-
}
46+
fix: fixReplaceNode(sourceCode, node, ccrNode, () => {
5647
let text =
5748
ccrNode.min.value < ccrNode.max.value
5849
? ccrNode.min.raw + ccrNode.max.raw
@@ -68,10 +59,10 @@ export default createRule("no-useless-range", {
6859
next.type === "Character" &&
6960
next.raw === "-"
7061
) {
71-
text += fixerApplyEscape("\\", node)
62+
text += "\\"
7263
}
73-
return fixer.replaceTextRange(range, text)
74-
},
64+
return text
65+
}),
7566
})
7667
},
7768
}

lib/rules/prefer-d.ts

Lines changed: 7 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,7 @@ import {
77
CP_DIGIT_ZERO,
88
CP_DIGIT_NINE,
99
getRegexpLocation,
10-
getRegexpRange,
11-
fixerApplyEscape,
10+
fixReplaceNode,
1211
} from "../utils"
1312

1413
export default createRule("prefer-d", {
@@ -65,20 +64,12 @@ export default createRule("prefer-d", {
6564
expr: reportNode.raw,
6665
instead,
6766
},
68-
fix(fixer) {
69-
const range = getRegexpRange(
70-
sourceCode,
71-
node,
72-
reportNode,
73-
)
74-
if (range == null) {
75-
return null
76-
}
77-
return fixer.replaceTextRange(
78-
range,
79-
fixerApplyEscape(instead, node),
80-
)
81-
},
67+
fix: fixReplaceNode(
68+
sourceCode,
69+
node,
70+
reportNode,
71+
instead,
72+
),
8273
})
8374
}
8475
},

lib/rules/prefer-plus-quantifier.ts

Lines changed: 7 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ import {
44
createRule,
55
defineRegexpVisitor,
66
getRegexpLocation,
7-
getRegexpRange,
87
getQuantifierOffsets,
8+
fixReplaceQuant,
99
} from "../utils"
1010

1111
export default createRule("prefer-plus-quantifier", {
@@ -49,23 +49,12 @@ export default createRule("prefer-plus-quantifier", {
4949
data: {
5050
expr: text,
5151
},
52-
fix(fixer) {
53-
const range = getRegexpRange(
54-
sourceCode,
55-
node,
56-
qNode,
57-
)
58-
if (range == null) {
59-
return null
60-
}
61-
return fixer.replaceTextRange(
62-
[
63-
range[0] + startOffset,
64-
range[0] + endOffset,
65-
],
66-
"+",
67-
)
68-
},
52+
fix: fixReplaceQuant(
53+
sourceCode,
54+
node,
55+
qNode,
56+
"+",
57+
),
6958
})
7059
}
7160
}

lib/rules/prefer-question-quantifier.ts

Lines changed: 14 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ import {
66
defineRegexpVisitor,
77
getRegexpLocation,
88
getQuantifierOffsets,
9-
getRegexpRange,
10-
fixerApplyEscape,
9+
fixReplaceQuant,
10+
fixReplaceNode,
1111
} from "../utils"
1212

1313
export default createRule("prefer-question-quantifier", {
@@ -53,23 +53,12 @@ export default createRule("prefer-question-quantifier", {
5353
data: {
5454
expr: text,
5555
},
56-
fix(fixer) {
57-
const range = getRegexpRange(
58-
sourceCode,
59-
node,
60-
qNode,
61-
)
62-
if (range == null) {
63-
return null
64-
}
65-
return fixer.replaceTextRange(
66-
[
67-
range[0] + startOffset,
68-
range[0] + endOffset,
69-
],
70-
"?",
71-
)
72-
},
56+
fix: fixReplaceQuant(
57+
sourceCode,
58+
node,
59+
qNode,
60+
"?",
61+
),
7362
})
7463
}
7564
}
@@ -125,20 +114,12 @@ export default createRule("prefer-question-quantifier", {
125114
expr: reportNode.raw,
126115
instead,
127116
},
128-
fix(fixer) {
129-
const range = getRegexpRange(
130-
sourceCode,
131-
node,
132-
reportNode,
133-
)
134-
if (range == null) {
135-
return null
136-
}
137-
return fixer.replaceTextRange(
138-
range,
139-
fixerApplyEscape(instead, node),
140-
)
141-
},
117+
fix: fixReplaceNode(
118+
sourceCode,
119+
node,
120+
reportNode,
121+
instead,
122+
),
142123
})
143124
}
144125
},

lib/rules/prefer-star-quantifier.ts

Lines changed: 7 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ import {
44
createRule,
55
defineRegexpVisitor,
66
getRegexpLocation,
7-
getRegexpRange,
87
getQuantifierOffsets,
8+
fixReplaceQuant,
99
} from "../utils"
1010

1111
export default createRule("prefer-star-quantifier", {
@@ -49,23 +49,12 @@ export default createRule("prefer-star-quantifier", {
4949
data: {
5050
expr: text,
5151
},
52-
fix(fixer) {
53-
const range = getRegexpRange(
54-
sourceCode,
55-
node,
56-
qNode,
57-
)
58-
if (range == null) {
59-
return null
60-
}
61-
return fixer.replaceTextRange(
62-
[
63-
range[0] + startOffset,
64-
range[0] + endOffset,
65-
],
66-
"*",
67-
)
68-
},
52+
fix: fixReplaceQuant(
53+
sourceCode,
54+
node,
55+
qNode,
56+
"*",
57+
),
6958
})
7059
}
7160
}

lib/rules/prefer-t.ts

Lines changed: 2 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,8 @@ import {
44
createRule,
55
defineRegexpVisitor,
66
getRegexpLocation,
7-
getRegexpRange,
87
CP_TAB,
9-
fixerApplyEscape,
8+
fixReplaceNode,
109
} from "../utils"
1110

1211
export default createRule("prefer-t", {
@@ -47,20 +46,7 @@ export default createRule("prefer-t", {
4746
data: {
4847
expr: cNode.raw,
4948
},
50-
fix(fixer) {
51-
const range = getRegexpRange(
52-
sourceCode,
53-
node,
54-
cNode,
55-
)
56-
if (range == null) {
57-
return null
58-
}
59-
return fixer.replaceTextRange(
60-
range,
61-
fixerApplyEscape("\\t", node),
62-
)
63-
},
49+
fix: fixReplaceNode(sourceCode, node, cNode, "\\t"),
6450
})
6551
}
6652
},

0 commit comments

Comments
 (0)