@@ -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