@@ -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);
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4