@@ -12,20 +12,10 @@ const regexp = require('../utils/regexp')
12
12
* @param {string } className
13
13
* @param {* } node
14
14
* @param {RuleContext } context
15
- * @param {Set<string> } forbiddenClasses
16
- * @param {Array<RegExp> } forbiddenClassesRegexps
15
+ * @param {(name: string) => boolean } isForbiddenClass
17
16
*/
18
- const reportForbiddenClass = (
19
- className ,
20
- node ,
21
- context ,
22
- forbiddenClasses ,
23
- forbiddenClassesRegexps
24
- ) => {
25
- if (
26
- forbiddenClasses . has ( className ) ||
27
- forbiddenClassesRegexps . some ( ( re ) => re . test ( className ) )
28
- ) {
17
+ const reportForbiddenClass = ( className , node , context , isForbiddenClass ) => {
18
+ if ( isForbiddenClass ( className ) ) {
29
19
const loc = node . value ? node . value . loc : node . loc
30
20
context . report ( {
31
21
node,
@@ -123,24 +113,16 @@ module.exports = {
123
113
124
114
/** @param {RuleContext } context */
125
115
create ( context ) {
126
- const forbiddenClasses = new Set ( context . options || [ ] )
127
- const forbiddenClassesRegexps = ( context . options || [ ] )
128
- . filter ( ( cl ) => regexp . isRegExp ( cl ) )
129
- . map ( ( cl ) => regexp . toRegExp ( cl ) )
116
+ const { options = [ ] } = context
117
+ const isForbiddenClass = regexp . toRegExpGroupMatcher ( options )
130
118
131
119
return utils . defineTemplateBodyVisitor ( context , {
132
120
/**
133
121
* @param {VAttribute & { value: VLiteral } } node
134
122
*/
135
123
'VAttribute[directive=false][key.name="class"][value!=null]' ( node ) {
136
124
for ( const className of node . value . value . split ( / \s + / ) ) {
137
- reportForbiddenClass (
138
- className ,
139
- node ,
140
- context ,
141
- forbiddenClasses ,
142
- forbiddenClassesRegexps
143
- )
125
+ reportForbiddenClass ( className , node , context , isForbiddenClass )
144
126
}
145
127
} ,
146
128
@@ -155,13 +137,7 @@ module.exports = {
155
137
for ( const { className, reportNode } of extractClassNames (
156
138
/** @type {Expression } */ ( node . expression )
157
139
) ) {
158
- reportForbiddenClass (
159
- className ,
160
- reportNode ,
161
- context ,
162
- forbiddenClasses ,
163
- forbiddenClassesRegexps
164
- )
140
+ reportForbiddenClass ( className , reportNode , context , isForbiddenClass )
165
141
}
166
142
}
167
143
} )
0 commit comments