mirror of
https://github.com/AmruthPillai/Reactive-Resume.git
synced 2026-08-24 07:12:18 +10:00
refactor(utils→import): move single-consumer date/html/level helpers, inline field into fonts
Finding 4 — consumer-count verification: @reactive-resume/utils/date → 1 consumer (packages/import/src/json-resume.tsx) @reactive-resume/utils/html → 1 consumer (packages/import/src/json-resume.tsx) @reactive-resume/utils/level → 1 consumer (packages/import/src/json-resume.tsx) @reactive-resume/utils/url → 4 consumers (auth, api/ai, import, server) — SKIPPED, stays in utils @reactive-resume/utils/field → 1 consumer (packages/fonts/src/index.ts) Move date/html/level source + test files into packages/import and update json-resume.tsx imports. Inline the two-line unique() helper into fonts/src/index.ts and drop the ./field subpath. Drop the three moved subpaths from packages/utils exports. Claude-Session: https://claude.ai/code/session_012Bnvt1MghwHj4qQRxuQUGa
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
/**
|
||||
* Parses a skill/language level string to a numeric value (0-5).
|
||||
* Supports numeric values, text levels (beginner/intermediate/advanced/expert),
|
||||
* and CEFR levels (A1-C2).
|
||||
*/
|
||||
export function parseLevel(level?: string): number {
|
||||
if (!level) return 0;
|
||||
|
||||
const levelLower = level.toLowerCase();
|
||||
|
||||
// Try to parse numeric values
|
||||
const numeric = Number.parseInt(levelLower, 10);
|
||||
if (!Number.isNaN(numeric) && numeric >= 0 && numeric <= 5) return numeric;
|
||||
|
||||
// Map text levels to numbers
|
||||
if (levelLower.includes("native") || levelLower.includes("expert") || levelLower.includes("master")) return 5;
|
||||
if (levelLower.includes("fluent") || levelLower.includes("advanced") || levelLower.includes("proficient")) return 4;
|
||||
if (levelLower.includes("intermediate") || levelLower.includes("conversational")) return 3;
|
||||
if (levelLower.includes("beginner") || levelLower.includes("basic") || levelLower.includes("elementary")) return 2;
|
||||
if (levelLower.includes("novice")) return 1;
|
||||
|
||||
// CEFR levels
|
||||
if (levelLower.includes("c2")) return 5;
|
||||
if (levelLower.includes("c1")) return 4;
|
||||
if (levelLower.includes("b2")) return 3;
|
||||
if (levelLower.includes("b1")) return 2;
|
||||
if (levelLower.includes("a2")) return 1;
|
||||
if (levelLower.includes("a1")) return 1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user