⚙️ Refactor SVG filename parsing and replace toComponentName function

This commit is contained in:
pheralb
2025-08-29 12:42:22 +01:00
parent 47bcca1bdc
commit acabd32b2d
2 changed files with 53 additions and 34 deletions
+42
View File
@@ -0,0 +1,42 @@
interface ParseSvgFilename {
file: string;
log?: boolean;
}
export const parseSvgFilename = (params: ParseSvgFilename): string => {
const { file, log } = params;
const name = file.replace(/\.svg$/i, "");
let component = name.replace(/(^\w|[-_]\w)/g, (m) =>
m.replace(/[-_]/, "").toUpperCase(),
);
if (/^\d/.test(component)) {
if (log) {
console.log(`[⚠️] Component name starts with a number: ${component}`);
}
component = "Icon" + component;
}
const reserved = new Set([
"default",
"class",
"function",
"var",
"export",
"import",
"extends",
"new",
"delete",
"enum",
"package",
]);
if (reserved.has(component)) {
if (log) {
console.log(`[⚠️] Component name is a reserved keyword: ${component}`);
}
component = "Icon" + component[0].toUpperCase() + component.slice(1);
}
return component;
};