@@ -228,6 +228,9 @@ module.exports = class RuleSet {
228228 }
229229
230230 static normalizeUse ( use , ident ) {
231+ if ( typeof use === "function" ) {
232+ return data => RuleSet . normalizeUse ( use ( data ) , ident ) ;
233+ }
231234 if ( Array . isArray ( use ) ) {
232235 return use
233236 . map ( ( item , idx ) => RuleSet . normalizeUse ( item , `${ ident } -${ idx } ` ) )
@@ -236,14 +239,6 @@ module.exports = class RuleSet {
236239 return [ RuleSet . normalizeUseItem ( use , ident ) ] ;
237240 }
238241
239- static normalizeUseItemFunction ( use , data ) {
240- const result = use ( data ) ;
241- if ( typeof result === "string" ) {
242- return RuleSet . normalizeUseItem ( result ) ;
243- }
244- return result ;
245- }
246-
247242 static normalizeUseItemString ( useItemString ) {
248243 const idx = useItemString . indexOf ( "?" ) ;
249244 if ( idx >= 0 ) {
@@ -258,9 +253,6 @@ module.exports = class RuleSet {
258253 }
259254
260255 static normalizeUseItem ( item , ident ) {
261- if ( typeof item === "function" )
262- return item ;
263-
264256 if ( typeof item === "string" ) {
265257 return RuleSet . normalizeUseItemString ( item ) ;
266258 }
@@ -385,13 +377,20 @@ module.exports = class RuleSet {
385377 } ) ;
386378
387379 if ( rule . use ) {
388- rule . use . forEach ( ( use ) => {
389- result . push ( {
390- type : "use" ,
391- value : typeof use === "function" ? RuleSet . normalizeUseItemFunction ( use , data ) : use ,
392- enforce : rule . enforce
393- } ) ;
394- } ) ;
380+ const process = use => {
381+ if ( typeof use === "function" ) {
382+ process ( use ( data ) ) ;
383+ } else if ( Array . isArray ( use ) ) {
384+ use . forEach ( process ) ;
385+ } else {
386+ result . push ( {
387+ type : "use" ,
388+ value : use ,
389+ enforce : rule . enforce
390+ } ) ;
391+ }
392+ } ;
393+ process ( rule . use ) ;
395394 }
396395
397396 if ( rule . rules ) {
0 commit comments