# To PascalCase

Fuente conceptual: MiroFish `backend/app/services/ontology_generator.py` (AGPL-3.0)
Reimplementar desde cero. No copiar codigo.

## Funcion a implementar

### to_pascal_case

- **Dominio:** core
- **Lang:** Python
- **Purity:** pure
- **Signature:** `to_pascal_case(name: str) -> str`
- **Descripcion:** Convierte cualquier formato de nombre (snake_case, camelCase, kebab-case, mixto) a PascalCase.
- **Algoritmo:**
  1. Split por caracteres no alfanumericos: `re.split(r'[^a-zA-Z0-9]+', name)`
  2. Cada parte: split adicional por boundary camelCase: `re.sub(r'([a-z])([A-Z])', r'\1_\2', part).split('_')`
  3. Capitalizar primera letra de cada word, join
  4. Si resultado vacio: retornar `"Unknown"`
- **Ejemplos:**
  - `"works_for"` → `"WorksFor"`
  - `"camelCaseExample"` → `"CamelCaseExample"`
  - `"person"` → `"Person"`
  - `"SCREAMING_SNAKE"` → `"ScreamingSnake"`
  - `"kebab-case"` → `"KebabCase"`
  - `""` → `"Unknown"`
- **Deps:** `re`
- **Tests:** snake_case, camelCase, UPPER_SNAKE, kebab-case, PascalCase (idempotente), string vacio, con numeros
