@schemifyjs/schematics
Version:
Reusable schematics for scaffolding SchemifyJS projects.
22 lines (21 loc) • 776 B
JavaScript
export function generateNameVariants(raw) {
// Normalize the input string to create various naming conventions
const normalized = raw
.normalize('NFD')
.replace(/[\u0300-\u036f]/g, '')
.toLowerCase()
.replace(/[^a-z0-9]+/g, '-')
.replace(/^-+|-+$/g, '');
// Generate different naming conventions
const camel = normalized.replace(/-([a-z0-9])/g, (_, c) => c.toUpperCase());
const pascal = camel.charAt(0).toUpperCase() + camel.slice(1);
const snake = normalized.replace(/-/g, '_');
const screamingSnake = snake.toUpperCase();
return {
projectName: normalized,
projectNameCamel: camel,
ProjectName: pascal,
project_name: snake,
PROJECT_NAME: screamingSnake
};
}