refactor: deduplicate CSS parser helpers and drop redundant base test
- Collapse extractRootBlock + extractDarkBlock into a single extractBlock
helper; the two functions shared identical body logic (same regex, same
return) and differed only in the string they received — now the call
sites pass the appropriate slice inline.
- Remove the second test in base.test.ts ("covers all three form control
selectors in one rule"): the first test's regex already asserts all
three selectors appear together with font-size: 16px, so the individual
/input/, /textarea/, /select/ matches added no coverage.
This commit is contained in:
@@ -8,9 +8,4 @@ describe('base.css', () => {
|
||||
expect(css).toMatch(/input\s*,\s*textarea\s*,\s*select\s*\{[^}]*font-size\s*:\s*16px/);
|
||||
});
|
||||
|
||||
it('covers all three form control selectors in one rule', () => {
|
||||
expect(css).toMatch(/input/);
|
||||
expect(css).toMatch(/textarea/);
|
||||
expect(css).toMatch(/select/);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -5,17 +5,11 @@ const css = readFileSync(new URL('../dist/tokens.css', import.meta.url), 'utf-8'
|
||||
|
||||
// ---- CSS parser helpers ----
|
||||
|
||||
function extractRootBlock(src: string): string {
|
||||
function extractBlock(src: string): string {
|
||||
const m = src.match(/:root\s*\{([^}]+)\}/);
|
||||
return m?.[1] ?? '';
|
||||
}
|
||||
|
||||
function extractDarkBlock(src: string): string {
|
||||
const afterMedia = src.split('@media (prefers-color-scheme: dark)')[1] ?? '';
|
||||
const m = afterMedia.match(/:root\s*\{([^}]+)\}/);
|
||||
return m?.[1] ?? '';
|
||||
}
|
||||
|
||||
function parseProps(block: string): Map<string, string> {
|
||||
const map = new Map<string, string>();
|
||||
const re = /--([\w-]+)\s*:\s*([^;]+);/g;
|
||||
@@ -63,8 +57,8 @@ function contrast(hex1: string, hex2: string): number {
|
||||
|
||||
// ---- Fixtures ----
|
||||
|
||||
const rootProps = parseProps(extractRootBlock(css));
|
||||
const darkProps = parseProps(extractDarkBlock(css));
|
||||
const rootProps = parseProps(extractBlock(css));
|
||||
const darkProps = parseProps(extractBlock(css.split('@media (prefers-color-scheme: dark)')[1] ?? ''));
|
||||
// Merged: dark overrides on top of light primitives so var() refs resolve correctly.
|
||||
const mergedDark = new Map([...rootProps, ...darkProps]);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user