@@ -12,20 +12,10 @@ const regexp = require('../utils/regexp')
1212 * @param {string } className
1313 * @param {* } node
1414 * @param {RuleContext } context
15- * @param {Set<string> } forbiddenClasses
16- * @param {Array<RegExp> } forbiddenClassesRegexps
15+ * @param {(name: string) => boolean } isForbiddenClass
1716 */
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 ) ) {
2919 const loc = node . value ? node . value . loc : node . loc
3020 context . report ( {
3121 node,
@@ -123,24 +113,16 @@ module.exports = {
123113
124114 /** @param {RuleContext } context */
125115 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 )
130118
131119 return utils . defineTemplateBodyVisitor ( context , {
132120 /**
133121 * @param {VAttribute & { value: VLiteral } } node
134122 */
135123 'VAttribute[directive=false][key.name="class"][value!=null]' ( node ) {
136124 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 )
144126 }
145127 } ,
146128
@@ -155,13 +137,7 @@ module.exports = {
155137 for ( const { className, reportNode } of extractClassNames (
156138 /** @type {Expression } */ ( node . expression )
157139 ) ) {
158- reportForbiddenClass (
159- className ,
160- reportNode ,
161- context ,
162- forbiddenClasses ,
163- forbiddenClassesRegexps
164- )
140+ reportForbiddenClass ( className , reportNode , context , isForbiddenClass )
165141 }
166142 }
167143 } )
0 commit comments