Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | import { BaseSelectorProcessor } from "./base-processor.js";
export type BEMDoubleDashProcessorResult = Record<string, string>;
/**
* Processor for BEM selectors with double dashes
*/
export class BEMDoubleDashProcessor extends BaseSelectorProcessor<BEMDoubleDashProcessorResult> {
private readonly sldsPrefix = "slds-";
private readonly doubleDashRegex = /--/g;
private readonly replacementChar = "_";
private selectorMap: BEMDoubleDashProcessorResult = {};
/**
* Process a selector node
* @param selector The selector node to process
*/
protected processSelectorNode(selector: any): void {
// Early return if not a class selector or doesn't start with slds-
if (
selector.type !== "class" ||
!selector.value.startsWith(this.sldsPrefix)
) {
return;
}
// Check if the selector contains double dashes (BEM modifier)
if (!selector.value.includes("--")) {
return;
}
const selectorValue = selector.value;
// Create the replacement selector by replacing double dashes with single dash
const replacementSelector = selectorValue.replace(
this.doubleDashRegex,
this.replacementChar
);
// Add to our map
this.selectorMap[selectorValue] = replacementSelector;
}
getResults(): BEMDoubleDashProcessorResult {
// Not sorted
return this.selectorMap;
}
}
|