@@ -96,14 +96,13 @@ export interface TokenStyleDefaults {
96
96
}
97
97
98
98
export interface TokenStylingDefaultRule {
99
- classification : TokenClassification ;
100
- matchScore : number ;
99
+ match ( classification : TokenClassification ) : number ;
100
+ selector : TokenClassification ;
101
101
defaults : TokenStyleDefaults ;
102
102
}
103
103
104
104
export interface TokenStylingRule {
105
- classification : TokenClassification ;
106
- matchScore : number ;
105
+ match ( classification : TokenClassification ) : number ;
107
106
value : TokenStyle ;
108
107
}
109
108
@@ -276,16 +275,35 @@ class TokenClassificationRegistry implements ITokenClassificationRegistry {
276
275
return { type : tokenTypeDesc . num , modifiers : allModifierBits } ;
277
276
}
278
277
279
- public getTokenStylingRule ( classification : TokenClassification , value : TokenStyle ) : TokenStylingRule {
280
- return { classification, matchScore : getTokenStylingScore ( classification ) , value } ;
278
+
279
+ private newMatcher ( selector : TokenClassification ) {
280
+ const score = getTokenStylingScore ( selector ) ;
281
+ return ( classification : TokenClassification ) => {
282
+ const selectorType = selector . type ;
283
+ if ( selectorType !== TOKEN_TYPE_WILDCARD_NUM && selectorType !== classification . type ) {
284
+ return - 1 ;
285
+ }
286
+ const selectorModifier = selector . modifiers ;
287
+ if ( ( classification . modifiers & selectorModifier ) !== selectorModifier ) {
288
+ return - 1 ;
289
+ }
290
+ return score ;
291
+ } ;
281
292
}
282
293
283
- public registerTokenStyleDefault ( classification : TokenClassification , defaults : TokenStyleDefaults ) : void {
284
- this . tokenStylingDefaultRules . push ( { classification, matchScore : getTokenStylingScore ( classification ) , defaults } ) ;
294
+ public getTokenStylingRule ( selector : TokenClassification , value : TokenStyle ) : TokenStylingRule {
295
+ return {
296
+ match : this . newMatcher ( selector ) ,
297
+ value
298
+ } ;
299
+ }
300
+
301
+ public registerTokenStyleDefault ( selector : TokenClassification , defaults : TokenStyleDefaults ) : void {
302
+ this . tokenStylingDefaultRules . push ( { selector, match : this . newMatcher ( selector ) , defaults } ) ;
285
303
}
286
304
287
305
public deregisterTokenStyleDefault ( classification : TokenClassification ) : void {
288
- this . tokenStylingDefaultRules = this . tokenStylingDefaultRules . filter ( r => ! ( r . classification . type === classification . type && r . classification . modifiers === classification . modifiers ) ) ;
306
+ this . tokenStylingDefaultRules = this . tokenStylingDefaultRules . filter ( r => ! ( r . selector . type === classification . type && r . selector . modifiers === classification . modifiers ) ) ;
289
307
}
290
308
291
309
public deregisterTokenType ( id : string ) : void {
@@ -330,18 +348,6 @@ class TokenClassificationRegistry implements ITokenClassificationRegistry {
330
348
331
349
}
332
350
333
- export function matchTokenStylingRule ( themeSelector : TokenStylingRule | TokenStylingDefaultRule , classification : TokenClassification ) : number {
334
- const selectorType = themeSelector . classification . type ;
335
- if ( selectorType !== TOKEN_TYPE_WILDCARD_NUM && selectorType !== classification . type ) {
336
- return - 1 ;
337
- }
338
- const selectorModifier = themeSelector . classification . modifiers ;
339
- if ( ( classification . modifiers & selectorModifier ) !== selectorModifier ) {
340
- return - 1 ;
341
- }
342
- return themeSelector . matchScore ;
343
- }
344
-
345
351
346
352
const tokenClassificationRegistry = new TokenClassificationRegistry ( ) ;
347
353
platform . Registry . add ( Extensions . TokenClassificationContribution , tokenClassificationRegistry ) ;
0 commit comments